首页 > 解决方案 > python无和等于评估

问题描述

如果我运行以下 Python 3.7 代码

a=None
b=None
a==b
>> True
b is not None
>> False
True is not None
>> True
a==b is not None
>> False

因为 a==b 是 True,这让我明白这段代码的计算结果为 A==B,其中 A=a 和 B=b 不是 None

但是,如果我运行以下代码

a = datetime(2020,1,1)
b = datetime(2020,1,1)
a==True
>> False
b is not None
>> True
a==b is not None
>> True

它与上述相矛盾。所以我对如何评估这一切感到有点困惑。

谢谢你的帮助!

标签: pythonoperatorspython-3.7

解决方案


您在示例中看到了运算符链接,

a==b is not None

相当于:

a==b and b is not None

因此结果。

如果要比较a==b,请使用原子表达式:

(a==b) is not None

6.10。详细对比。简而言之,a op1 b op2 c ... y opN z等价于a op1 b and b op2 c and ... y opN z,除了每个表达式最多计算一次。


推荐阅读