簡體   English   中英

Python 3:帶星號的表達式解包列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM