Pho*_*nix 0 python dictionary python-3.x
今天进来并进行了调试,发现由于not aDict被不同地对待,我预测的行为存在偏差not aDict=={}.有知道的人可以强调这两种形式之间的差异吗.
偏差是由以下代码行引起的
if not aDictA and not aDictB:
Run Code Online (Sandbox Code Playgroud)
两者都等于{}但if条件没有返回true.
代码行改为
if not aDictA=={} and not aDictB=={}:
Run Code Online (Sandbox Code Playgroud)
和代码按预期工作.
你认为空字典False在布尔上下文中是正确的.因此,not {}和empty_dict == {}是等价的,但是...
在第一个,你正在检查它们是否是False.
>>> not {}
True
Run Code Online (Sandbox Code Playgroud)
但是在第二个中,你实际上是在检查它们是否为空(因此False)然后用它来反转它not.
>>> not not {} # This is basically what you are doing.
False
Run Code Online (Sandbox Code Playgroud)
你会得到不同的结果,因为你实际上没有测试相同的条件.