python None和equals求值

python None和equals求值,python,operators,python-3.7,Python,Operators,Python 3.7,如果我运行以下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是真的,这使我理解了这段代码的计算结果是a==b,其中a=a和b=b不是无 但是,如果我运行以下代码 a = datetime(2020,1,1) b = datetime(2020,1,1) a

如果我运行以下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是真的,这使我理解了这段代码的计算结果是a==b,其中a=a和b=b不是无

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

a = datetime(2020,1,1)
b = datetime(2020,1,1)
a==True
>> False
b is not None
>> True
a==b is not None
>> True
这与上述观点相矛盾。所以我对如何评估这一切有点困惑


谢谢你的帮助

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

a==b不是无
相当于:

a==b且b不是无
结果就是这样

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

(a==b)不是无
有关详细信息,请参阅。
简而言之,
a op1 b op2 c。。。y opN z
相当于a op1 b和b op2 c和。。。y opN z,除了每个表达式最多计算一次。

第一个示例
a==b不是无
扩展为
a==b,b不是无
=>True和False=>False。第二个例子是扩展的
a==b,而b不是None
=>
True和True
True
,表达式的扩展就是为什么Python允许您编写
a
,这就变成了
a
,而大多数其他语言只是试图将
a
布尔值与c进行比较,从而得到无意义的结果。