1.*args
学过python 的都知道*args是接受不定长位置参数的也就是可以接受多个参数
def test(a,*args):
print(a)
print('-'*60)
print(args,type(args))
print('-' * 60)
print(*args)
test(1,2,3,4)
1
------------------------------------------------------------
(2, 3, 4) <class 'tuple'>
------------------------------------------------------------
2 3 4
由上面调用结果可看出,a接受了第一个参数,而后面的被打包成了一个元组赋值给了args,此时arg是一个元组,在前面加上*可以把元组拆解成单个元素
2.**kwargs
kwarg是不定长关键字参数,将多个关键字参数打包成字典传给kwargs
def test1(**kwargs):
print(kwargs)
test1(a=1,b=2,c=3)
{'a': 1, 'b': 2, 'c': 3}
ps:需要注意的是位置参数*args,一定要在关键字参数**kwargs前
3. * 和 ** 对于字典,列表,元组的作用
_tuple = (1,2,3)
_list = [1,2,3]
_dict = {'a':1,'b':2,'c':3}
print(_tuple,'-------',*_tuple)
print(_list,'-------',*_list)
print(_dict,'-------',*_dict)
(1, 2, 3) ------- 1 2 3
[1, 2, 3] ------- 1 2 3
{'a': 1, 'b': 2, 'c': 3} ------- a b c
在列表、元组、字典加*号会将它们拆分成一个一个的独立元素
_dict = {'a':1,'b':2,'c':3}
def test2(a,b,c):
print(a,b,c)
test2(**_dict)
#其实就是拆包
1 2 3
当然,对于二维数组也是一样的效果
_list1 = [[1,2,3],[4,5,6]]
print(_list1,'------',*_list1)
[[1, 2, 3], [4, 5, 6]] ------ [1, 2, 3] [4, 5, 6]
可以利用** 对字典进行合并
a = {'a':1,'b':2}
b = {'c':3,'d':4}
s = {**a,**b}
print(s)
输出结过
{'a': 1, 'b': 2, 'c': 3, 'd': 4}