python学习笔记7-函数的多类型传值和冗余参数
函数多类型传值
例一,元组传参
In [2]: def fun(x,y): ...: return x+y In [4]: print fun(3,5) 8 In [5]: t=(1,2) In [6]: print fun(*t) 注意,这里使用的是*t调用元组t 3 In [7]: print fun(t) 用t,不加*,报错只给了一个参数,需要给2哥参数 --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-7-e28f492cc4ca> in <module>() ----> 1 print fun(t) TypeError: fun() takes exactly 2 arguments (1 given) In [10]: def fun(x,y,z): ....: return x+y+z ....: In [11]: t1=(2,3,4) In [12]: fun(*t1) 把元组t1的值,2,3,4分别赋值给x,y,z Out[12]: 9 In [13]: fun(*(1,2,3)) 把1,2,3赋值给x,y,z Out[13]: 6 In [14]: fun(1,*t) t=(1,2) 把1,1,2分别赋值给x,y,z Out[14]: 4 In [15]: fun(*t,1) File "<ipython-input-15-aee1a8f57f2b>", line 1 fun(*t,1) SyntaxError: only named arguments may follow *expression 只有命名参数后面可以跟*expression表达式,1是命名参数,1,*t正确,*t,1错误 也可以这样调用参数 In [16]: fun(x=1,y=3,z=5) Out[16]: 9
例二、字典传值
注:字典的key和形参是一样的才行,都是x,y,z,否则报错 In [10]: def fun(x,y,z): ....: return x+y+z n [20]: dic ={‘x‘:1,‘y‘:3,‘z‘:5} In [21]: fun(**dic) Out[21]: 9
函数的冗余参数
向函数传元组和字典
处理多余实参,传到字典中
def fun(x,y,*args,**kwargs)
In [29]: def fun(x,y,*args,**kwargs): print x print args print kwargs In [46]: fun(1,2,[1,2],*t,f=2,**dic1) 1 ([1, 2], 1, 2) {‘a‘: 4, ‘c‘: 9, ‘b‘: 6, ‘f‘: 2}
本文出自 “梅花香自苦寒来!” 博客,请务必保留此出处http://daixuan.blog.51cto.com/5426657/1790496
原文地址:http://daixuan.blog.51cto.com/5426657/1790496