9-28 函数

动态参数

可以接受任意多个参数,在参数名前面加*,习惯参数名用args
位置顺序:位置参数,*args,默认参数,**kwargs
def s(*args):
    s=0
    for i in args:
        s+=i
    return s
#此时将参数整体当成一个元组
print(s(1,2,3))#结果6
def func(*args,l=[]): print(args)#结果:(1, 2, 'str', ['jkj', 1]) print(args,l)#结果:(1, 2, 'str') ['jkj', 1] func(1,2,'str',['jkj',1]) func(1,2,'str',l=['jkj',1]) #此时将参数当做字典 def funct(**kwargs): print(kwargs) funct(a=1,b=2,c=3)  #结果:{'a': 1, 'b': 2, 'c': 3}
def func(*args,default=1,**kwargs):
    print(args,default,kwargs)
func(1,2,3,4,5,default=2,a='aaa',b='bbbb')  #结果:(1, 2, 3, 4, 5) 2 {'a': 'aaa', 'b': 'bbbb'}

动态参数的另一种传参方式

def func(*args):#站在形参的角度上,给变量加上*,就是组合所有传来的值
    print(args)
func(1,2,3,4,5) #结果:(1, 2, 3, 4, 5)
l=[1,2,3,4,5]
#站在实参的角度上,给一个序列加上*,就是将这个序列按照顺利打散
func(*l)    #结果:(1, 2, 3, 4, 5)

def funct(**kwargs):
    print(kwargs)
funct(a=1,b=2)  #结果:{'a': 1, 'b': 2}
d={'a':1,'b':2}
funct(**d)  #结果:{'a': 1, 'b': 2}

  

 

  


动态参数有两种
:可以接收任意个参数
*args:接收的是按照位置传参的值,组织成一个元组
**kwargs:接收的是按照关键字传参的值,组织成一个字典
args必须在kwargs之前

原文地址:https://www.cnblogs.com/Cheryol/p/9718598.html