Python 'x in y'是否遵循运算符优先级规则?

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的
和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太多了