Python 在一个语句中使用is和==时,如何解释以下行为?

Python 在一个语句中使用is和==时,如何解释以下行为?,python,Python,我试图了解下面发生了什么,但我不能 get_val = lambda: print('abc') or 5 print(1 is None == get_val()) # It prints False print((1 is None) == get_val()) # It prints 'abc' then False print(1 is (None == get_val())) # It prints 'abc' then False 请注意,我通过调试以下内容注意到了这一点 如

我试图了解下面发生了什么,但我不能

get_val = lambda: print('abc') or 5
print(1 is None == get_val())  # It prints False
print((1 is None) == get_val())  # It prints 'abc' then False
print(1 is (None == get_val()))  # It prints 'abc' then False
请注意,我通过调试以下内容注意到了这一点
如果a为None==f()为None
这显然不好,但令我惊讶的是f()根本没有执行


非常感谢…

这两个
都是
==
运算符都是比较运算符。因此,当您像第一次
print
调用一样使用它们时,它们将被链接


比较可以任意链接,例如,
x都是
==
运算符都是比较运算符。因此,当您像第一次
print
调用一样使用它们时,它们将被链接


比较可以任意链接,例如,
x1为无
已经为假,所以不需要运行最后一个表达式,即函数调用。比较将被短路,因为
1为无
已经为假,所以不需要运行最后一个表达式,这是函数调用。
a is None == f() is None
(a is None) and (None == f()) and (f() is None)