字典真值测试

时间:2018-07-24 01:03:14

标签: python python-3.x dictionary false-positive truthiness

>>> dict = {}
>>> a=2
>>> if a is not None and dict is None:
...     print("lol")
... else:
...     print(" Print result is a")
... 
   result is a

为什么第一个if statement does not run? I am specifying that the字典is empty and that“ a”`存在。

参考:https://docs.python.org/2/library/stdtypes.html#truth-value-testing

2 个答案:

答案 0 :(得分:1)

  

我指定的字典是空的,并且“ a”存在。

不,您不是。您正在测试a是否与None(真)不同,以及{}是否与None(假)相同。

您想要的是a and not d。您几乎永远都不想与布尔值进行比较,并且您当然也不想与is进行比较。

答案 1 :(得分:1)

因为字典不是None

值为false和满足is None之间存在差异。

直接测试真实性:

if a is not None and not dict:

但是,正如注释中所指出的,不要将变量的名称与现有函数的名称相同。那只是在将来要求'dict' object is not callable错误。