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), 'tuple'>) ({}, 'dict'>)
show([22,33,44])
>>>(([23, 33, 44],), 'tuple'>) ({}, 'dict'>)
show(22,33,44,k=1,b=2)
>>>((23, 33, 44), 'tuple'>) ({'k': 1, 'b': 2}, 'dict'>)
#假如我想传入变量
l=[12,33,44]
d={'k1':1,'k2':2}
show(l,d)
>>>(([12, 33, 44], {'k2': 2, 'k1': 1}), 'tuple'>) ({}, 'dict'>) #字典没有接收到,全给了元组
#解决方法
show(*l,**d)
>>>((12, 33, 44), 'tuple'>) ({'k2': 2, 'k1': 1}, 'dict'>)