的功能我有这样的事情:与布尔值传递字典使用双星号
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
这应该被关闭/删除:当我调试我的情况时,我有严重的困惑,而且这太急了。道歉并感谢所有看着它的人! –