# 函数的参数
# 1、形参
def fuc_01(a, b, c): # a\b\c均为形参
print(a + b + c)
fuc_01(1, 2, 3) # 1\2\3均为形实参,并按位置传参,形参与实参数量要一致
fuc_01(a=2, c=3, b=4)
fuc_01(1, 3, c=4)
# fuc(a=1,3,c=2),这个会报错,要先位置传参,再关键字传参
# 2、默认参数
def fuc_02(a, b, c=3):
print(a + b + c)
fuc_02(3, 4)
fuc_02(4, 5, 6) # 默认参数可变
# 3、动态参数,*args必须放在**kwargs前面
def fuc_03(*args): # 只能按位置传参
print(args) # 默认变成元组
fuc_03() # 输出:()
fuc_03(22) # 输出:(22,)
fuc_03(22, 33) # 输出:(22, 33)
fuc_03(1, 2, 3) # 输出:(1, 2, 3)
def fuc_04(**kwargs): # 只能按关键字传参
print(kwargs)
fuc_04(a='秦始皇', b=3333, c='打钱') # 输出:{'a': '秦始皇', 'b': 3333, 'c': '打钱'}
fuc_04() # 输出{}
def fuc_05(*args, **kwargs):
print(args, kwargs)
fuc_05(88, 99, a='秦始皇', b=3333, c='打钱') # 输出:(88, 99) {'a': '秦始皇', 'b': 3333, 'c': '打钱'}
fuc_05(99, 88) # 输出:(99, 88) {}
fuc_05(a='秦始皇', b=3333) # 输出:() {'a': '秦始皇', 'b': 3333}
# fuc_05(a='秦始皇',88,99,b=3333) # 输出:报错
# 参数和动态参数混合一起,参数必须放在动态参数前面
# 默认参数和动态参数放一起,默认参数需放在**kwargs前