“in”运算符的优先级是什么?

Kri*_*odu -1 python boolean-logic operators python-3.x

今天我在这个Python程序中遇到了一个困难的情况:

a = [False, True]
x = True in a in a
y = True in a in [a]
z = True in a in (a)
print(x, y, z)
Run Code Online (Sandbox Code Playgroud)

这段代码的输出是

a = [False, True]
x = True in a in a
y = True in a in [a]
z = True in a in (a)
print(x, y, z)
Run Code Online (Sandbox Code Playgroud)

这怎么可能?

让我们在x这里测试:

x = True in a in a
Run Code Online (Sandbox Code Playgroud)

True in [False, True]True,又True in [False, True]True

所以x应该是True。但是当我运行程序时,它说False

现在让我们从右到左:

x = True in a in a
Run Code Online (Sandbox Code Playgroud)

[False, True] in [False, True]is False,所以现在True in False可能是类型错误或其他一些错误。

你能解释一下吗?

khe*_*ood 6

Python 链接某些运算符,包括in.

这个:

True in a in [a]
Run Code Online (Sandbox Code Playgroud)

方法

(True in a) and (a in [a])
Run Code Online (Sandbox Code Playgroud)

所以如果a等于[False,True],则表达式为真。


其他版本:

True in a in a
True in a in (a)
Run Code Online (Sandbox Code Playgroud)

彼此等效。将括号放在周围(a)不会改变它的类型或它的值。

两者都意味着(True in a) and (a in a),所以除非a包含自身,否则它们是错误的。