函数的四种传参方式

# 函数
# 四种传参方式,位置参数,关键字参数,动态传参,动态关键字传参

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'}
#函数在定义时,是不关心其内部的,只有在调用时内部的代码才会执行,*在定义函数时代表聚合,而在执行时代表打散。
原文地址:https://www.cnblogs.com/tengx/p/11699695.html