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 相关文章推荐
动态创建类实例代码
Oct 07 Python
python列表与元组详解实例
Nov 01 Python
使用Python判断IP地址合法性的方法实例
Mar 13 Python
一个小示例告诉你Python语言的优雅之处
Jul 04 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
Sep 05 Python
使用Python操作excel文件的实例代码
Oct 15 Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
Jun 13 Python
Python基于递归算法求最小公倍数和最大公约数示例
Jul 27 Python
Python的垃圾回收机制详解
Aug 28 Python
Python tcp传输代码实例解析
Mar 18 Python
详解Python中的进程和线程
Jun 23 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
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
javascript延时加载之defer测试
2012/12/28 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
JS实现微信摇一摇原理解析
2017/07/22 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
python实现银行实战系统
2020/02/26 Python
Python Selenium截图功能实现代码
2020/04/26 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
如何表示python中的相对路径
2020/07/08 Python
python判断变量是否为列表的方法
2020/09/17 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
一套Delphi的笔试题一
2016/02/14 面试题
自动化毕业生专业自荐书范文
2014/02/04 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
投诉信格式范文
2015/07/02 职场文书
关于车尾的标语大全
2015/08/11 职场文书
大学军训通讯稿(2016最新版)
2015/12/21 职场文书