我对Python如何评估布尔语句感到困惑.
对于前者
False and 2 or 3
Run Code Online (Sandbox Code Playgroud)
返回3
这是如何评估的?我认为Python首先看'False和2',并且在没有看'或3'的情况下返回False.Python在这里看到的顺序是什么?
另一个是:
1 or False and 2 or 2 and 0 or 0
Run Code Online (Sandbox Code Playgroud)
返回1
从我从第一个例子中收集到的,我认为Python将从左到右进行评估,因此'1或False'将返回1,然后'1和2'将返回2,然后'2或2'将返回前2 ,然后'2和0'将返回0,然后'0或0'将返回第二个0.
你可以告诉我在这里非常困惑,请帮忙!
谢谢!
Fel*_*ing 10
and优先级高于or.
False and 2 or 3
Run Code Online (Sandbox Code Playgroud)
被评估为
((False and 2) or 3)
Run Code Online (Sandbox Code Playgroud)
由于第一部分(False and 2)是False,Python必须评估第二部分,以查看整个条件是否仍然可以成为True.它可以,因为3计算结果True返回此操作数.
类似的1 or False and 2 or 2 and 0 or 0评估为
(1 or ((False and 2) or ((2 and 0) or 0)))
Run Code Online (Sandbox Code Playgroud)
从1评估到True,整个条件将是True,无论其他操作数具有哪个值.Python可以在此时停止评估,并再次返回确定最终值的操作数.
确定最终结果的早期停止称为短路评估,可以描述如下:
每当确定表达式的最终结果时,停止评估,并在Python中返回确定最终值的操作数的值.也就是说,假设从左到右的评估:
and运算符,最左边的操作数计算为False(或最后一个)or运算符,最左边的操作数计算为True(或最后一个)| 归档时间: |
|
| 查看次数: |
3385 次 |
| 最近记录: |