我有這個變量**參考可變
data = {
'username' : self.username,
'attributes' : self._get_attrs(),
}
是什麼意思時,我引用它像**數據?
我有這個變量**參考可變
data = {
'username' : self.username,
'attributes' : self._get_attrs(),
}
是什麼意思時,我引用它像**數據?
**
展開您的字典。例如:
def func(username=None, attributes=None):
print(username)
data = {
'username' : "Bob",
'attributes' : {},
}
func(**data)
# results in "Bob"
它也可以被用來收集關鍵字參數(kwargs),如在this question about *args and **kwargs看到。
此外,在Python 3.5+中,[它可以更普遍地用於從其他映射構造'dict's](https://www.python.org/dev/peps/pep-0448/),例如,將兩個'dict'組合成一個新的第三個'dict',其中'combined ** {dict1,** dict2}'。 – ShadowRanger
**
in **data
是Python中的一個字典解包運算符。見What is the name of **
in python?
從help('CALLS')
:
如果語法「**表達」出現在函數調用, 「表達」的計算結果必須的映射,這些都 視爲附加的關鍵字參數的內容。如果出現在「表達式」中的關鍵字 以及明確的關鍵字參數,則會引發 「TypeError」異常。
請參閱Understanding kwargs in Python。
還有PEP: 448 -- Additional Unpacking Generalizations:
>>> {**{'a': 1, 'b': 2}, **{'a': 3, 'c': 4}}
{'b': 2, 'a': 3, 'c': 4}
@Rogalski:我最初還以爲這是一個重複的,但另一個問題是,只有星星*在參數*。 –