在 Python 中,'x or False' 和 'False and x 有什么意义?

In Python, what's the point of 'x or False' and 'False and x?

我正在使用 web2py,我一直在查看源代码以获取 一些更好的理解。我多次看到

这样的作业
# in file appadmin.py
is_gae = request.env.web2py_runtime_gae or False

如果 request.env.web2py_runtime_gae 为 true,则 False 无关紧要。无论哪种方式,如果 request.env.web2py_runtime_gae 是 false.

,则表达式变为 false

还有:

# in file appadmin.py
if False and request.tickets_db:
  from gluon.restricted import TicketStorage

永远不会计算 and 子句的第二部分,因为 False 和 x 总是 returns false。

那么为什么要这样做呢?

val = x or False

确保 val 实际上是 'False'(类型 'bool')而不是 Falsey 值,如 0 或“”。

第二个可能只是针对该情况的临时禁用?

最好的调查地点可能是源代码控制历史?

与您假设的不太一样。 Python evaluates conditions lazily,因此如果已知该值满足条件,则评估退出。看这个例子:

>>> None or False
False
>>> True or False
True
>>> 0 or False
False
>>> 'Value' or False
'Value'

第二个,根据 lazy evaluation,将简单地 return False 该语句,其余语句将不会被评估。这可以是一种无条件禁用该 if 语句的方法。