python - 试图了解 python 中关于 'and' 命令的一个简单特性。谁能澄清一下?

标签 python

<分区>

在 Python 中,如果我写

z = 1 and 2
print z

然后它产生“2”。

但是如果我写

z = 0 and 2
print z

现在,它产生“0”。

这在现实生活中可能不是很重要,但我试图理解这里的逻辑。

最佳答案

0 , [] , ""都是 false-ish(它们在 python 条件下被视为 False)。 and返回第一个 false-ish 值或最后一个值。这叫做 short-circuit evaluation .这就是为什么在一种情况下它返回 2 (最后一个)和另一个它返回 0 (错误的)。

事实上,如果你考虑一下逻辑运算,你可以将这种行为短路:

x and y (with x false-ish) -> x  
x and y (with x true-ish)  -> y

当插入一个条件时,它将评估为:

  • 在第一种情况下,它评估 x 的 bool 结果这是 False .这是 and 的正确结果操作,自False and y = False对于任何 y .
  • 在第二种情况下,它评估 y 的 bool 值.自 x是 True,and 的结果应该是 False什么时候yFalseTrue什么时候yTrue (它反射(reflect)了 y 的值)。

关于python - 试图了解 python 中关于 'and' 命令的一个简单特性。谁能澄清一下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31501694/

相关文章:

python - 拼写检查算法输出所有内容而不仅仅是拼写错误(Python)?

python - 将Numpy图像数组转换为1px高版本

python - 有没有办法从多个字典中访问具有相同名称的键?

python - 复杂Func的Django自定义(sql函数)

python - Django 查询多对多子集包含

python - 在 Python 中有条件地向字典添加属性

python - 使用 Python 3.6、Apache 2.4 和 Django 1.11 在 Ubuntu 上安装 mod_wsgi

python - 分析长期运行的 Python 服务器

Python 请求:检查 URL 是否不是 HTML 网页

python - 我需要编写一个 Python 脚本来对图片进行排序,我该怎么做?