分別用Python的*和**語法將元組和字典映射到位置參數(shù)和關(guān)鍵字參數(shù)

* 語法

用于函數(shù)傳參中,對于需要多個位置參數(shù)(positional argument)的函數(shù),將元組或列表展開(unpacking)為一個或多個位置參數(shù)。
注:其實只要是可迭代(iterable)的對象都可以通過此方式展開,而不僅僅是前面講的元組或列表。

row = ('ACME', 50, 91.5)
lis = list(row)
print(*row)
print(*lis)

等效于print('ACME', 50, 91.5)
輸出:
ACME 50 91.5
ACME 50 91.5

** 語法

用于函數(shù)傳參中,對于需要多個關(guān)鍵字參數(shù)(keyword argument)的函數(shù),將詞典展開(unpacking)為一個或多個關(guān)鍵字參數(shù)

d={ 'end':'!!!\n', 'sep':', '}
print('Hello', 'world', **d)

輸出:
Hello, world!!!

同時使用 * 和 ** 語法

row = ('ACME', 50, 91.5)
d={ 'end':'!!!\n', 'sep':', '}
print(*row, **d)

輸出:
ACME, 50, 91.5!!!

Exception Note

注意:print(*row, **d)print(sep=', ', end='!!!\n', *row) 的寫法都是OK的,但是不可以寫成print(**d, *row). 因為位置參數(shù)不可在關(guān)鍵字參數(shù)之后。

否則將提示
SyntaxError: iterable argument unpacking follows keyword argument unpacking

參考

*args 和 **kwargs - 《Python 進階》on Gitbook

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容