今天进入调试阶段,发现由于not aDict
与not aDict=={}
的处理方式不同,我预测的行为存在偏差。知道的人是否可以突出显示这两种形式之间的差异。
偏差是由以下代码行引起的
if not aDictA and not aDictB:
两者都等于{}但if条件没有返回true。
代码行改为
if not aDictA=={} and not aDictB=={}:
并且代码按预期工作。
答案 0 :(得分:6)
你认为空字典在布尔上下文中是False
是正确的。因此,not {}
和empty_dict == {}
是等效的,但是......
在第一个中,您正在检查它们是否为False
。
>>> not {}
True
但是在第二个中,您实际上是在检查它们是否为空(因此为False
),然后使用not
将其反转。
>>> not not {} # This is basically what you are doing.
False
你会得到不同的结果,因为你实际上没有测试相同的条件。