1 算术运算
*
代表乘法**
代表乘方>>> 2 * 5
10
>>> 2 ** 5
32
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: one
data2: 2
data3: 3
>>> kwargs = {"data3": "one", "data2": 2, "data1": 3}
>>> fun(**kwargs)
data1: 3
data2: 2
data3: 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