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编程之变量赋值操作实例分析
Jul 24 Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 Python
Python实现的连接mssql数据库操作示例
Aug 17 Python
python微信好友数据分析详解
Nov 19 Python
Python中按键来获取指定的值
Mar 02 Python
python时间序列按频率生成日期的方法
May 14 Python
django框架实现一次性上传多个文件功能示例【批量上传】
Jun 19 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
pygame实现俄罗斯方块游戏(AI篇2)
Oct 29 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
pandas抽取行列数据的几种方法
Dec 13 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 21 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
PHP4实际应用经验篇(2)
2006/10/09 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
一些mootools的学习资源
2010/02/07 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
2016/01/08 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
Angular.js去除页面中显示的空行方法示例
2017/03/30 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
微信小程序获取当前时间及星期几的实例代码
2020/09/20 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
python数据结构之二叉树的统计与转换实例
2014/04/29 Python
在Django的模板中使用认证数据的方法
2015/07/23 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
Python当中的array数组对象实例详解
2019/06/12 Python
python binascii 进制转换实例
2019/06/12 Python
python程序变成软件的实操方法
2019/06/24 Python
使用Python pip怎么升级pip
2020/08/11 Python
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
如何保障Web服务器安全
2014/05/05 面试题
公司租车协议书
2015/01/29 职场文书
入党个人总结范文
2015/03/02 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
会计入职心得体会
2016/01/22 职场文书
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技