我正在使用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。
那么为什么会这样做呢?
答案 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值。
第二种可能只是暂时禁用该条件?
调查的最佳位置可能是源控制历史记录?