Python函数中定义参数的四种方式


Posted in Python onNovember 30, 2014

Python中函数参数的定义主要有四种方式:

1. F(arg1,arg2,…)

这是最常见的定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义的函数在调用的的时候也必须在函数名后的小括号里提供个数相等
的值(实际参数),而且顺序必须相同,也就是说在这种调用方式中,形参和实参的个数必须一致,而且必须一一对应,也就是说第一个形参对应这第一个实参。例如:

def a(x,y):print x,y

调用该函数,a(1,2)则x取1,y取2,形参与实参相对应,如果a(1)或者a(1,2,3)则会报错。

2. F(arg1,arg2=value2,…)

这种方式就是第一种的改进版,提供了默认值,例如:

def a(x,y=3):print x,y

调用该函数,a(1,2)同样还是x取1,y取2,但是如果a(1),则不会报错了,这个时候x还是1,y则为默认的3。上面这俩种方式,还可以更换参数位置,比如a(y=4,x=3)用这种形式也是可以的。

3. F(*arg1)

上面两种方式是有多少个形参,就传进去多少个实参,但有时候会不确定有多少个参数,则此时第三种方式就比较有用,它以一个*加上形参名的方式来表示这个函
数的实参个数不定,可能为0个也可能为n个。注意一点是,不管有多少个,在函数内部都被存放在以形参名为标识符的元组中。

def a(*x):print x
>>> a(1,2,3)
(1, 2, 3)
>>> a(x=1,y=2,z=3)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: a() got an unexpected keyword argument 'x'

4. F(**arg1)

形参名前加两个*表示,参数在函数内部将被存放在以形式名为标识符的dictionary中,这时调用函数的方法则需要采用arg1=value1,arg2=value2这样的形式。

def a(**x):print x
>>> a(x=1,y=2,z=3)
{'y': 2, 'x': 1, 'z': 3} #存放在字典中
>>> a(1,2,3) #这种调用则报错
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: a() takes exactly 0 arguments (3 given)
Python 相关文章推荐
Python实现的检测web服务器健康状况的小程序
Sep 17 Python
Python MD5加密实例详解
Aug 02 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
Apr 19 Python
python 实现在txt指定行追加文本的方法
Apr 29 Python
python3读取excel文件只提取某些行某些列的值方法
Jul 10 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 Python
Python适配器模式代码实现解析
Aug 02 Python
简单了解python 生成器 列表推导式 生成器表达式
Aug 22 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
Python 操作 MySQL数据库
Sep 18 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 Python
Python 自动补全(vim)
Nov 30 #Python
给Python IDLE加上自动补全和历史功能
Nov 30 #Python
让 python 命令行也可以自动补全
Nov 30 #Python
Python lambda和Python def区别分析
Nov 30 #Python
Python内置函数之filter map reduce介绍
Nov 30 #Python
Python Queue模块详解
Nov 30 #Python
Python socket C/S结构的聊天室应用实现
Nov 30 #Python
You might like
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
php 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
九步学会Python装饰器
2015/05/09 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
python爬虫实例详解
2018/06/19 Python
Python操作MySQL数据库的方法
2018/06/20 Python
python3 unicode列表转换为中文的实例
2018/10/26 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
对Django中内置的User模型实例详解
2019/08/16 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
Aosom西班牙:家具在线商店
2020/06/11 全球购物
Yahoo-PHP面试题2
2014/12/06 面试题
过滤器的用法
2013/10/08 面试题
幼儿园家长评语大全
2014/04/16 职场文书
办护照工作证明
2014/10/01 职场文书
鲁迅故居导游词
2015/02/05 职场文书
工程部部长岗位职责
2015/02/12 职场文书
技术支持岗位职责
2015/02/13 职场文书
青年联谊会致辞
2015/07/31 职场文书
《检阅》教学反思
2016/02/22 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书