[英]Python 3: starred expression to unpack a list
使用示例:
def f(a, b, c, d):
print(a, b, c, d, sep = '&')
f(1,2,3,4)
>>> 1&2&3&4
f(*[1, 2, 3, 4])
>>> 1&2&3&4
在 python 文檔中的哪里*
解釋了?
*args
調用約定記錄在表達式參考中:
如果語法
*expression
出現在函數調用中,則expression
計算結果必須為可迭代對象。 來自這個可迭代對象的元素被視為額外的位置參數; 如果存在位置參數x1, ..., xN ,並且expression
計算結果為序列y1, ..., yM ,則這等效於具有 M+N 個位置參數x1, ..., xN, y1, ...的調用。 ..,嗯。
因此,由於您使用[1, 2, 3, 4]
作為表達式,這是一個可迭代的,並且沒有其他位置參數,因此將其視為 M=0 和 N=4 的調用,總共4 個位置參數。
因此,您也可以將您的函數稱為f(1, 2, *[3, 4])
或任何其他可迭代和位置參數的組合,前提是可迭代在位置之后。
只是對未命名和命名參數的組合進行非常簡單的擴展。
這是您要記住的一般順序:
def func(arg_1, ..., arg_N, *args, kwarg_1, ..., kwarg_M, **kwargs):
# do stuff
return True
其中,在大多數典型情況下;
arg_i
都是一個未命名的參數,args
是一個列表,因此是一組未命名的參數,kwarg_j
都是一個命名參數,kwargs
是一個字典,因此是一組命名參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.