为什么第一个返回为真?不';t python从左到右读取?如果是这样,那么第一个应该是错误的
我不明白为什么第一个是真的,当它看到真的还是真的时会短路为什么第一个返回为真?不';t python从左到右读取?如果是这样,那么第一个应该是错误的,python,Python,我不明白为什么第一个是真的,当它看到真的还是真的时会短路 >>> True or False and False True >>> True or False and True True 由于的:和的优先级高于或。因此Python将首先执行和,所以 第一个是这样的: True or (False and False) => True or False => True True or (False and True) => True
>>> True or False and False
True
>>> True or False and True
True
由于的:和
的优先级高于或
。因此Python将首先执行和,所以
第一个是这样的:
True or (False and False)
=> True or False
=> True
True or (False and True)
=> True or False
=> True
(False和False)
的结果为False
,True或False
的结果为True
第二个是这样的:
True or (False and False)
=> True or False
=> True
True or (False and True)
=> True or False
=> True
(False和True)
的结果再次是False
,True或False
是True
,,的优先级高于或。因此Python将首先执行和,所以
第一个是这样的:
True or (False and False)
=> True or False
=> True
True or (False and True)
=> True or False
=> True
(False和False)
的结果为False
,True或False
的结果为True
第二个是这样的:
True or (False and False)
=> True or False
=> True
True or (False and True)
=> True or False
=> True
(False和True)
的结果再次是False
,True或False
是True
,在Python中,和
的优先级高于或
,这意味着和
将首先绑定(在中搜索运算符优先级,例如(1))
因此,您的两条语句相当于(尽管您错误地断言Python从左向右读取):
而且,无论上面两个表达式中括号内的子表达式的结果如何,或
将其与True
进行比较,都会得到True
(1) 为了完整起见,该链接的相关部分(解释性文本和表格的初始部分)包括在下面,我强调:
下表总结了Python中运算符的优先级,从最低优先级(最少绑定)到最高优先级(最多绑定)。同一框中的运算符具有相同的优先级。除非明确给出语法,否则运算符是二进制的。同一框中的运算符从左到右分组(幂运算除外,幂运算从右到左分组)
操作员说明
----------------
lambda lambda表达式
if–else条件表达式
或布尔值或
和布尔and
非x布尔非
在Python中,和
的优先级高于或
,这意味着和
将首先绑定(在中搜索运算符优先级
,例如(1))
因此,您的两条语句相当于(尽管您错误地断言Python从左向右读取):
而且,无论上面两个表达式中括号内的子表达式的结果如何,或
将其与True
进行比较,都会得到True
(1) 为了完整起见,该链接的相关部分(解释性文本和表格的初始部分)包括在下面,我强调:
下表总结了Python中运算符的优先级,从最低优先级(最少绑定)到最高优先级(最多绑定)。同一框中的运算符具有相同的优先级。除非明确给出语法,否则运算符是二进制的。同一框中的运算符从左到右分组(幂运算除外,幂运算从右到左分组)
操作员说明
----------------
lambda lambda表达式
if–else条件表达式
或布尔值或
和布尔and
非x布尔非
您应该提到和
的优先级高于或
,类似于*
的优先级高于+
。您应该提到和
的优先级高于或
,与*
类似,具有比+
更高的优先级。还有更多。还有更多。