1.算數(shù)運算
* 代表乘法
** 代表乘方
2.函數(shù)形參
主要用于函數(shù)定義举农,區(qū)別:
- *args,表示任何多個無名參數(shù)腌且,它本質(zhì)是一個 tuple(位置參數(shù)positional argument)
- **kwargs 表示關(guān)鍵字參數(shù)梗肝,它本質(zhì)上是一個 dict(關(guān)鍵詞參數(shù)keyword argument)
如果同時使用 *args 和 **kwargs 時,必須 *args 參數(shù)列要在 **kwargs 之前铺董∥谆鳎可變位置參數(shù)*args是一個元組,是不可修改的精续。
def fun(name, *args, **kwargs):
print(name)
print(args)
print(kwargs)
fun(1, 2, 3, 4, 5, a="1", b="2", c="3")
1
(2, 3, 4, 5)
{a="1", b="2", c="3"}
3.函數(shù)實參
如果函數(shù)的形參是定長參數(shù)坝锰,也可以使用 *args 和 **kwargs 調(diào)用函數(shù),類似對元組和字典進行解引用重付。
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.序列解包
- 什么是序列解包顷级,看例子:這種方法并不限于列表和元組,而是適用于任意序列類型(甚至包括字符串和字節(jié)序列)堪夭。只要賦值運算符左邊的變量數(shù)目與序列中的元素數(shù)目相等愕把,都可以用這種方法將元素序列解包到另一組變量中。
a, b, c = 1, 2, 3
# a = 1
# b = 2
# c = 3
- 可以利用 * 表達式獲取單個變量中的多個元素森爽,只要它的解釋沒有歧義即可恨豁。* 獲取的值默認為 list.
獲取剩余部分:
a, b, *c = 0, 1, 2, 3
# a = 0
# b = 1
# c = (2, 3)
獲取中間部分:
a, *b, c = 0, 1, 2, 3
# a = 0
# b = (1, 2)
# c = 3
如果左值比右值要多,那么帶 * 的變量默認為空:
a, *b, c = a, b, *c = 0, 1
# a = 0
# b = 1
# c = ()
嵌套解包:
(a, b), (c, d) = (1, 2), (3, 4)
# a = 1
# b = 2
# c = 3
# d = 4
出處:
https://blog.csdn.net/yilovexing/article/details/80577510
https://blog.csdn.net/yilovexing/article/details/80576788