也许这是一个非常基本的问题,但这对我来说没有任何意义。
如果我这样做:
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
是不是应该这样表现? 如果是这样,为什么?
答案 0 :(得分:5)
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``
但是not
确实的优先级高于or
,后者是您应该使用的运算符。
not(False)or(not(False)) == not False or (not False)
== (not False) or (not False)
== True or True
== True
文档按优先级从低到高的顺序提供了full list个可用的运算符。
答案 1 :(得分:1)
Python的布尔运算符使用符号and
,or
,not
,而不是符号&&,|| !!。