函数的四种传参方式
# 函数 # 四种传参方式,位置参数,关键字参数,动态传参,动态关键字传参 def fun1(a,b): print(a,b) fun1("a",b='b') # result:a,b位置参数和关键字参数混合应用 def fun1(a,b,*lst,e="e"): print(a,b,lst,e) fun1("a",'b','c','d') # result:a b ('c', 'd') e 动态传参必须在位置参数之后,默认值参数之前,否则默认值参数永远不生效,位置参数永远没有值 def fun1(a,b,*lst,**kwargs): print(a,b,lst,kwargs) fun1("a",'b','c','d',e="e",f="f") # result:a b ('c', 'd') {'e': 'e', 'f': 'f'} 关键字动态传参必须放在最后,因为关键字传参放在位置参数前会导致程序错乱报错 def fun1(*args): print(args) lst = [1,2,3,4] fun1(*lst) # result:(1, 2, 3, 4)实参位置传一个可迭代对象加*代表将这个对象按顺序打散,如果是字典也可以打散 def fun1(**kwargs): print(kwargs) dic = {'a':'a','b':'b'} fun1(**dic) # result:{'a': 'a', 'b': 'b'}
#函数在定义时,是不关心其内部的,只有在调用时内部的代码才会执行,*在定义函数时代表聚合,而在执行时代表打散。