【问题标题】:How does compare work if value1 == value2 is not None in python?如果 value1 == value2 在 python 中不是 None,比较如何工作?
【发布时间】:2018-12-28 09:45:33
【问题描述】:

我发现了

a == b is not None

比较a == b,如果为真,则执行b is not None

(a == b) is not None  

a == (b is not None)

在哪里可以找到有关此类行为的更多信息? 这很简单,但我希望True is not None 被执行

【问题讨论】:

标签: python logical-operators


【解决方案1】:

这在语言参考中记录,6.10. Comparisons:

与 C 不同,Python 中的所有比较操作都具有相同的优先级,低于任何算术、移位或按位操作。同样与 C 不同的是,像 a < b < c 这样的表达式具有数学中的常规解释:

comparison    ::=  or_expr (comp_operator or_expr)*
comp_operator ::=  "<" | ">" | "==" | ">=" | "<=" | "!="
                   | "is" ["not"] | ["not"] "in"

比较产生布尔值:TrueFalse

比较可以任意链接,例如,x &lt; y &lt;= z 等价于 x &lt; y and y &lt;= z,除了 y 仅被评估一次(但在这两种情况下,z 在发现 x &lt; y 时根本不会被评估是假的)。

形式上,如果 a, b, c, , y , z 是表达式,op1, op2, , opN 是比较运算符,则a op1 b op2 c ... y opN z 等价于a op1 b and b op2 c and ... y opN z,只是每个表达式最多计算一次。

请注意,a op1 b op2 c 并不意味着在 ac 之间进行任何类型的比较,因此,例如,x &lt; y &gt; z 是完全合法的(尽管可能不漂亮)。

==is not 都是比较运算符,因此它们如上所述进行链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多