函数参数的对应
我们根据位置传递对应的参数,
>>> def f(a,b,c):
... return a+b+c
...
>>> f(1,2,3)
6
关键字传递
位置传递比较死板,关键字传递,根据每个参数的名字传递参数,
更改调用方式
>>> f(c=4,a=2,b=1)
7
也可以关键字和位置传递混用,
>>> f(4,c=2,b=1)
7
参数默认值
>>> def f(a,b,c=1):
... return a+b+c
...
>>> f(3,4)
8
包裹传递
在定义函数时,我们并不知道调用的时候会传递多少个参数,这时候包裹位置参数
包裹关键字参数,来传递参数,会非常有用。
>>> def func(*name): #位置传递 ... print type(name) #根据位置合并为一个元组 ... print name ... >>> func(1,2,3) <type 'tuple'> (1, 2, 3) >>> func(1,2,3,[123]) <type 'tuple'> (1, 2, 3, [123])
包裹关键字传递
>>> def func(**dict): ... print type(dict) ... print dict ... >>> func(a=1,b=9) <type 'dict'> {'a': 1, 'b': 9}
包裹传递的关键在与定义函数时,在相应元组或字典前加*或**
解包裹
*与**,也可以在调用的时候使用,即解包裹
>>> def func(a,b,c): ... print a,b,c ... >>> args=(1,5,2) #解包裹就是传入tuple时,让tuple的每一个元素对应一个位置参数。 >>> func(*args) #调用时候用*,提醒python,把args拆分为三个元素。 1 5 2
>>> dict={'b':2,'c':1,'a':9} >>> func(**dict) 9 2 1
参数传递:先位置,再关键字,再包裹位置,再包裹关键字,并且根据上面所说的原理细细分辨。