国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python常见问题 > Python函数参数的定义有哪几种?

Python函数参数的定义有哪几种?

头像

Python

2019-06-26 09:52:084282浏览 · 0收藏 · 0评论

函数参数的使用有两个方面值得注意:函数参数是如何定义的以及在调用函数的过程中参数是如何被解析的。

先看第一个问题,在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=8,x=3)用这种形式也是可以的。 

3.F(*arg1) 

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

>>> def a(*x): 
if len(x)==0: 
print 'None' 
else: 
print x 
>>> a(1) 
(1,) #存放在元组中 
>>> a() 
None 
>>> a(1,2,3) 
(1, 2, 3) 
>>> a(m=1,y=2,z=3) 
Traceback (most recent call last): 
File "", line 1, in -toplevel- 
a(m=1,y=2,z=3) 
TypeError: a() got an unexpected keyword argument 'm'

4.F(**arg1) 

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

>>> def a(**x): 
if len(x)==0: 
print 'None' 
else: 
print x 
>>> a() 
None 
>>> a(x=1,y=2) 
{'y': 2, 'x': 1} #存放在字典中 
>>> a(1,2) #这种调用则报错 
Traceback (most recent call last): 
File "", line 1, in -toplevel- 
a(1,2) 
TypeError: a() takes exactly 0 arguments (2 given)

上面介绍了四种定义方式,接下来看函数参数在调用过程中是怎么被解析的,其实只要记住上面这四种方法优先级依次降低,先1,后2,再3,最后4,也就是先把方式1中的arg解析,然后解析方式2中的arg=value,再解析方式3,即是把多出来的arg这种形式的实参组成个tuple传进去,最后把剩下的key=value这种形式的实参组成一个dictionary传给带俩个星号的形参,也就方式4。 

>>> def test(x,y=1,*a,**b): 
print x,y,a,b 
>>> test(1) 
1 1 () {} 
>>> test(1,2) 
1 2 () {} 
>>> test(1,2,3) 
1 2 (3,) {} 
>>> test(1,2,3,4) 
1 2 (3, 4) {} 
>>> test(x=1,y=2) 
1 2 () {} 
>>> test(1,a=2) 
1 1 () {'a': 2} 
>>> test(1,2,3,a=4) 
1 2 (3,) {'a': 4} 
>>> test(1,2,3,y=4) 
Traceback (most recent call last): 
File "", line 1, in -toplevel- 
test(1,2,3,y=4) 
TypeError: test() got multiple values for keyword argument 'y'
关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

女神开档泳装图片| 意大利人妻伦换| 黑料 官网| 15岁女初中生免费观看电视剧| 国内夫妇交换自拍视频| 《玉尺经》| 两个男人搞一个女人的心理| 有没有免费看片的软件| 《高压监狱2》完整版| 韩漫免费观看下拉式漫画软件测评 | 公厕被偷窃视频大全| 日日精进久久为功的下一句是| KELE| 《被社长强睡的人妻| 老师下面太紧拔不出来怎么办| 蜜桃成熟2| 成品人和精品人的区别哪个好 | 动物扌桑辶鬲的| 夸克浏览器APP官方下载正版 | 《XL司令》第一季动漫免费播放| 黄金网站9.1免费入口 | 半推半就干朋友老婆下一句怎么接| 两个奶头被吃得又翘又肿特别疼 | 情满四合院免费观看全集电视剧| 小雪解开乳罩给老杨摸| 两个人免费完整版在线观看| 成品PPT网站大片入口| 《厨房激战5》完整版在线观看 | 《一滴都不许漏》何泽城林荫| 干婚是什么意思| 《李瓶儿之真爰无悔》| 小静被门卫大爷灌满JNG液视... | 精品免费国产一区二区二区四区| 女性扒开大腿内侧小肚子痒 | 汁液横流BY笔趣阁| 数字人民币是什么意思| 伦理《少妇的滋味》完整版| 雨后的故事| 巨乳| 免费观看已满十八岁电视剧高清版| 小叔子媳妇在我房间坐月子怎么办