或|的奇怪行为运算符,而不是

问题描述 投票:0回答:2

也许这是一个非常基本的问题,但对我来说没有任何意义。

如果我这样做:

In: not(False),(not(False))
Out: (True,True)

因此,基本逻辑运算表明True Or True始终为True

但是如果我这样做:

not(False)|(not(False))
Out: False

如果我将括号用于第一个条件:

In: (not(False))|(not(False))
Out: True

并且如果我使用Or而不是|:

In: not(False)or(not(False))
Out: True

是否应该像这样表现?如果是这样,为什么?

python boolean boolean-operations
2个回答
4
投票

not不是函数;是优先级低于|的运算符。

not(False)|(not(False)) 
    == not False | (not False)    drop (...) around literal False
    == not (False | (not False)   add (...) implied by operator precedence
    == not (False | True)         evaluate ``not False``
    == not True                   evaluate ``False | True``
    == False                      evaluate ``not True``

0
投票

[Python将andornot用作其布尔运算符,而不是符号&&,||,!。

© www.soinside.com 2019 - 2024. All rights reserved.