Or | 的奇怪行为运算符与非

Strange behavior for Or | operator and Not

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

如果我这样做:

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

它应该表现得像这样吗? 如果是,为什么?

not 不是函数;它是一个优先级低于 |.

的一元运算符
not(False)|(not(False)) 
    == not False | (not False)    <i>drop (...) around literal False</i>
    == not (False | (not False)   <i>add (...) implied by operator precedence</i>
    == not (False | True)         <i>evaluate ``not False``</i>
    == not True                   <i>evaluate ``False | True``</i>
    == False                      <i>evaluate ``not True``</i>

但是 not 的优先级是否高于 or,这是您应该使用的运算符。

not(False)or(not(False)) == not False or (not False)
                         == (not False) or (not False)
                         == True or True
                         == True

文档按优先级从低到高提供了 full list 个可用运算符。

Python 使用单词 andornot 作为布尔运算符,而不是符号 &&、||、!.