1 算术运算
*代表乘法**代表乘方>>> 2 * 510>>> 2 ** 532
2 函数形参
*args 以及 **kwargs 在很多函数中都很常见,是用来将不定数量的参数传递给函数用的。
- 这两个名字是习惯写法
- 在函数形参中,可以只使用上面其中之一
- 但如果想两个一起使用,
*args必须放在**kwargs之前
- 但如果想两个一起使用,
*arg表示任意多个无名参数,本质上是一个 tuple**kwargs表示任意多个关键字参数,本质上是一个 dict>>> def fun(*args, **kwargs):... print('args=', args)... print('kwargs=', kwargs)...>>> fun(1, 2, 3, 4, A='a', B='b', C='c', D='d')args = (1, 2, 3, 4)kwargs= {A='a', B='b', C='c', D='d'}
3 函数实参
如果函数的形参是定长参数,则传入 *args 和 **kwargs 的实参相当于解引用。
>>> def fun(data1, data2, data3):... print("data1: ", data1)... print("data2: ", data2)... print("data3: ", data3)...>>> args = ("one", 2, 3)>>> fun(*args)data1: onedata2: 2data3: 3>>> kwargs = {"data3": "one", "data2": 2, "data1": 3}>>> fun(**kwargs)data1: 3data2: 2data3: one
4 序列解包
'*' 可以将变量中可迭代对象的元素拆解出来,变成若干个独立的参数。比如矩阵转置:
> lst = [[1,2,3], [4,5,6]]> lst_T = list(map(list, zip(*lst)))> lst_T[[1, 4], [2, 5], [3, 6]]
https://blog.csdn.net/yilovexing/article/details/80576788
【参考链接】
https://blog.csdn.net/yilovexing/article/details/80577510
