在Python中,'x或False'和'False和x是什么意思?

时间:2016-05-24 12:06:11

标签: python logic web2py

我正在使用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

永远不会评估子句的第二部分,因为 False且x 始终返回false。

那么为什么会这样做呢?

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:2)

val = x or False

确保val实际上是' False' (键入' bool')而不是像0或""等的Falsey值。

第二种可能只是暂时禁用该条件?

调查的最佳位置可能是源控制历史记录?