gpt4 book ai didi

python - bool 运算

转载 作者:太空狗 更新时间:2023-10-29 21:16:53 29 4
gpt4 key购买 nike

我对 Python 如何计算 bool 语句感到困惑。

例如

False and 2 or 3

返回 3

这是如何评估的?我认为 Python 首先会查看“False and 2”,甚至不查看“or 3”就返回 False。 Python 在这里看到的顺序是什么?

另一个是:

1 or False and 2 or 2 and 0 or 0

返回 1

根据我从第一个示例中收集到的信息,我认为 Python 会从左到右求值,因此“1 or False”会返回 1,然后“1 and 2”会返回 2,然后“2 or 2”会返回第一个 2,然后 '2 and 0' 将返回 0,然后 '0 or 0' 将返回第二个 0。

如你所知,我在这里很困惑,请帮忙!

谢谢!

最佳答案

and 的优先级高于 or

False and 2 or 3

被评估为

((False and 2) or 3)

由于第一部分 (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)))

由于 1 的计算结果为 True,因此无论其他操作数的值是什么,整个条件都将为 True。 Python 可以在此时停止计算并再次返回确定最终值的操作数。

在确定最终结果时尽早停止称为short-circuit evaluation可以描述如下:

每当确定表达式的最终结果时,计算就会停止,并且在 Python 中返回确定最终值的操作数的值。也就是说,假设是从左到右的评估:

  • 对于 and 运算符,计算结果为 False 的最左边的操作数(或最后一个)
  • 对于 or 运算符,计算结果为 True(或最后一个)的最左边的操作数

关于python - bool 运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10474882/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com