# 函数
# 四种传参方式,位置参数,关键字参数,动态传参,动态关键字传参
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'}
#函数在定义时,是不关心其内部的,只有在调用时内部的代码才会执行,*在定义函数时代表聚合,而在执行时代表打散。