在 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 语句的方法。
我正在使用 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 语句的方法。