Python 'x in y'是否遵循运算符优先级规则?
关于y中非x的Python 'x in y'是否遵循运算符优先级规则?,python,python-3.x,Python,Python 3.x,关于y中非x的和y中非x的之间的差异的说明表明这两个在实现上是等价的(在CPython中)。布尔值not的优先级高于中的的状态。那么不是y中的x是否应该实现为等同于y中的(不是x 考虑 x = False list2 = ['a'] not x in list2 Out[19]: True (not x) in list2 Out[20]: False 如果我正确理解了优先规则,我会认为最后一个语句是False。相当微妙,但如果你查看链接到的官方文档,你会发现“not in”是它自己的运算符,
和y中非x的之间的差异的说明表明这两个在实现上是等价的(在CPython中)。布尔值not
的优先级高于中的的状态。那么不是y中的x
是否应该实现为等同于y中的(不是x
考虑
x = False
list2 = ['a']
not x in list2
Out[19]: True
(not x) in list2
Out[20]: False
如果我正确理解了优先规则,我会认为最后一个语句是False
。相当微妙,但如果你查看链接到的官方文档,你会发现“not in”是它自己的运算符,它的优先级高于“not”,与“in”的优先级相同
您的错误可能来自错误地阅读运算符优先级规则。就目前的情况而言,最低的优先级在列表中排名靠前。
因此,列表2中的非x
等于非(列表2中的x)
您的上一个假设将首先计算非x
为布尔值(False),然后检查该布尔值是否在列表中(事实并非如此,列表中只有一个字符串),然后返回False。您的问题的答案在您链接的问题中。公认答案的最后一段:“b
中的非a形式是特殊情况,因此它实际上没有使用一般运算符。这使得b
中的非a与b
中的非a在字面上是相同的表达式。”此外,您读错了表,它从最小到最大的优先顺序列出了运算符,因此,y中的非x
与您声称的非(y中的x)
和y中的非(非x)
相同。哎呀,那句话里的not太多了