的功能我有這樣的事情:與布爾值傳遞字典使用雙星號
def x(**kwargs):
y(**kwargs)
def y(**kwargs):
print(kwargs)
d = {
'a': 1,
'b': True,
'c': 'Grace'
}
x(d)
我看到的行爲,使用調試器,是kwargs
在y()
等於這樣的:
{
'kwargs': {
'a': 1,
'c': 'Grace'
}
}
我明顯錯誤地理解雙星號是因爲它應該打包和解壓縮鍵值對的字典,允許您將字典作爲關鍵字參數傳遞到方法中。然而,有兩件事讓我困惑:
- 爲什麼包裝嵌套字典在
kwargs
鍵? - 爲什麼布爾值被丟棄?
我理想上喜歡避免這兩種行爲,但我明顯錯過了這個雙星號行爲的細節。
再次檢查您的問題...您應該得到TypeError:x()需要0個位置參數,但給出1個。 – pbuck
我在3.5看不到你的行爲。首先,我得到一個錯誤'x()需要0個位置參數',所以改成'x(** d)'不能嵌套在'kwargs'下,顯然'x(kwargs = d)'給出了嵌套的字典,但是沒有時間''b''消失。 – AChampion
這應該被關閉/刪除:當我調試我的情況時,我有嚴重的困惑,而且這太急了。道歉並感謝所有看着它的人! –