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原始字符串(raw strings)用法实例
Oct 13 Python
python图像处理之反色实现方法
May 30 Python
详解Python import方法引入模块的实例
Aug 02 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
Nov 29 Python
浅析Python3爬虫登录模拟
Feb 07 Python
PyQt5每天必学之进度条效果
Apr 19 Python
对Python中一维向量和一维向量转置相乘的方法详解
Aug 26 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 Python
python+opencv实现移动侦测(帧差法)
Mar 20 Python
Python如何对XML 解析
Jun 28 Python
python3排序的实例方法
Oct 20 Python
Python+logging输出到屏幕将log日志写入文件
Nov 11 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
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
新安装的MySQL数据库需要注意的安全知识
2008/07/30 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
User Scripts: Video Download by User Scripts
2007/05/14 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
微信小程序 监听手势滑动切换页面实例详解
2017/06/15 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
python统计cpu利用率的方法
2015/06/02 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
django celery redis使用具体实践
2019/04/08 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
Python猴子补丁知识点总结
2020/01/05 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
两道JAVA笔试题
2016/09/14 面试题
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
2014年幼儿园后勤工作总结
2014/11/10 职场文书
父亲节感言
2015/08/03 职场文书
党章学习心得体会2016
2016/01/14 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL