1.普通參數。實參與形參的順序必須一一對應,而且不能少傳或者多傳
def show(user,password):
print (user)
print (password)
show('csdn','csdn')
#少傳
show('csdn')
#報錯:TypeError: show() takes exactly 2 arguments (1 given)
#多傳
show('csdn','csdn','csdn')
#報錯:TypeError: show() takes exactly 2 arguments (3 given)
2.默認參數,函數中默認參數在普通參數的後面,且在進行參數傳遞的時候,默認參數可以不用進行指定。
def show(user,password='123456'):
print (user),
print (password)
show('csdn')
>>>csdn,123456
show('csdn','csdn')
>>>csdn,csdn
3.指定參數。如果我不想要按照順序傳遞參數應該怎麼辦。
def show(user,password):
print (user),
print (password)
show(password='12345',user='csdn')
>>>csdn,12345
4.動態參數。利用元組和字典,一般放在最後面.且元組參數在字典前面,只能這樣(*arg,**argv),不能這樣(**argv,*arg)
def show(*arg,**argv):
print (arg,type(arg)),
print (argv,type(argv))
show(23,33,44)
>>>((23, 33, 44), <type 'tuple'>) ({}, <type 'dict'>)
show([22,33,44])
>>>(([23, 33, 44],), <type 'tuple'>) ({}, <type 'dict'>)
show(22,33,44,k=1,b=2)
>>>((23, 33, 44), <type 'tuple'>) ({'k': 1, 'b': 2}, <type 'dict'>)
#假如我想傳入變量
l=[12,33,44]
d={'k1':1,'k2':2}
show(l,d)
>>>(([12, 33, 44], {'k2': 2, 'k1': 1}), <type 'tuple'>) ({}, <type 'dict'>) #字典沒有接收到,全給了元組
#解決方法
show(*l,**d)
>>>((12, 33, 44), <type 'tuple'>) ({'k2': 2, 'k1': 1}, <type 'dict'>)