蟒蛇 3.2.3。这里 列出了 一些想法,它们适用于常规 var,但 **kwargs 似乎按照不同的规则发挥作用……那么为什么这不起作用,我如何检查**kwargs 中的键是否存在?
if kwargs['errormessage']:
print("It exists")
我也认为这应该行得通,但行不通——
if errormessage in kwargs:
print("yeah it's here")
我猜是因为 kwargs 是可迭代的?我是否必须遍历它以检查是否存在特定密钥?
原文由 Zamphatta 发布,翻译遵循 CC BY-SA 4.0 许可协议
你要
获取
errormessage
的值这样,
kwargs
只是另一个dict
。您的第一个示例if kwargs['errormessage']
表示“获取与 kwargs 中的键“errormessage”关联的值,然后检查其 bool 值”。因此,如果没有这样的密钥,您将得到一个KeyError
。Your second example,
if errormessage in kwargs:
, means “ifkwargs
contains the element named by ”errormessage
“, and unless ”errormessage
“ is the一个变量的名称,你会得到一个NameError
。我应该提到字典也有一个方法
.get()
它接受一个默认参数(本身默认为None
),所以kwargs.get("errormessage")
和None
否则(类似kwargs.get("errormessage", 17)
做你可能认为它做的)。当您不关心键存在和将None
作为值或键不存在之间的区别时,这会很方便。