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 使用单词 and
、or
、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 使用单词 and
、or
、not
作为布尔运算符,而不是符号 &&、||、!.