函数参数的对应

我们根据位置传递对应的参数,

>>> 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

参数传递:先位置,再关键字,再包裹位置,再包裹关键字,并且根据上面所说的原理细细分辨。