python None和equals求值
如果我运行以下Python 3.7代码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
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进行比较,从而得到无意义的结果。