Python:函数参数

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

你可能感兴趣的:(python笔记)