*kwargs
class test():
def __init__(self, *kwargs):
print(kwargs)
其中 *kwargs 代表传入是数据是长度可变序列,如 tuple 、list 等
测试
e = test(a, b, c) # print ('a', 'b', 'c')
a = ["d", "f", "c"]
b = [1, 2,34]
c = zip(a,b)
d = dict(c)
e = test(a) # (['d', 'f', 'c'],)
e = test(*a) # ('d', 'f', 'c')
f = test(a, b, c, d)
#(['d', 'f', 'c'], [1, 2, 34], <zip object at 0x7f4f709347d0>, {'d': 1, 'f': 2, 'c': 34})
当函数调用时不加 * 则传入参数需要至少2个,并且数据会被当做一个整体输入,当加 *时数据会整体替换掉 *kwargs
**kwargs
class test():
def __init__(self, **kwargs):
print(kwargs)
其中 *kwargs 代表传入是数据是长度的字典(dict)
a = ["d", "f", "c"]
b = [1, 2,34]
c = zip(a,b)
d = dict(c)
e = test(*d) # error 数据长度不正确
e = test(d) # error 数据长度不正确
f = test(**d) #{'d': 1, 'f': 2, 'c': 34}
f = test(a = 1, b = 2) #{'a': 1, 'b': 2}
当传入参数为字典时需要 在待传参数前加入 **