位置传递
>>>def func1(a,b,c):
return a*b*c
>>>func1(1,2,3) #这种传递就叫做位置传递,对应位置上的参数对应value
关键字传递
>>>def func2(a,b,c):
return a+b+c
>>>func2(a=2,b=3,c=5) #这种传递叫做关键字传递,即将参数名与对应value显式的一一对应起来
参数默认值传递
>>>def func3(a,b,c=3):
return 2*a-b+c
>>>func3(6,2) #这种传递叫做默认值传递,将第三个参数设为默认值,为3,调用时可不再传进该参数
包裹传递
>>>def func4(*packet):
print(type(packet))
print(packet)
>>>func4(4,5,6,7) #这种传递叫做包裹传递,定义时必须要带上*号
<type 'tuple'> #注意,是一个tuple
(4,5,6,7)
包裹关键字传递
>>>def func5(**packet):
print(type(packet))
print(packet)
>>>func5(a=4,b=5,c=6,d=7) #这种传递叫做包裹关键字传递,定义时必须要带上两个*号
<type 'dict'> #注意,是一个dict
{'a':4,'b':5,'c':6,'d':7}
解包
>>>def func6(a,b,c):
print(a,b,c)
>>>a = (2,3,5)
>>>func6(*a)
2 3 5
>>>a = {'a': 3,'b': 6,'c': 7}
>>>func6(**a)
3 6 7
总结
上面几种参数传递方式其实在实际编程中可以进行混合操作,但要遵循一个原则,那就是:先位置,后关键字,包裹位置,包裹关键字。