【问题标题】:In Python, what's the point of 'x or False' and 'False and x?在 Python 中,“x or False”和“False and x”有什么意义?
【发布时间】:2016-05-24 12:06:10
【问题描述】:

我正在使用 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 总是返回 false。

那么为什么要这样做呢?

【问题讨论】:

    标签: python logic web2py


    【解决方案1】:

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

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

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

    【讨论】:

    • Python 是一种迷人而奇异的语言。
    • 这是一个名为 short-circuit evaluation 的功能,存在于多种语言中,例如 JavaScript。
    【解决方案2】:
    val = x or False
    

    确保 val 实际上是 'False'(输入 'bool')而不是 0 或 "" 之类的 Falsey 值。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      相关资源
      最近更新 更多