# *args和**kwargs的用途:主要用于函数定义, 可以将不定数量的参数传递给一个函数。
# *args代表任何多个无名参数,返回的是元组
# *args是用来发一个非键值对的可变数量的参数列表给一个函数
# **kwargs表示关键字参数,所有传入的key=value,返回字典
# **kwargs允许将一个不定长度的键值对,作为参数传递给一个函数
def test(a, *args, **kwargs):
print(a)
print(args)
print(kwargs)
print('***************************************')
def ak(*args, **kwargs):
print('args=', args)
print('kwargs=', kwargs)
print('***************************************')
if __name__ == '__main__':
test(1, 3, 5, 7, c='2', d=4)
ak(2, 4, 6, 8)
ak(a=2, b=4, c=6, d=8)
ak(2, 4, 6, 8, a=1, b=3, c=5)
ak('x', 2, None, a=4, b='6', c=8)
# 同时使用 *args 和 **kwargs 时,*args 参数必须要列在 **kwargs 前,否则会报错。
# ak('a', a=1, 1, None, b='2', c=3)