"in" 运算符链接([True] 中 [True] 中的 True 输出:False )

"in" operator chaining ( True in [True] in [True] OUTPUT: False )

我想弄清楚这段代码的运行顺序:

print( True in [True] in [True] )
False

即使:

print( ( True in [True] ) in [True] )
True

和:

print( True in ( [True] in [True] ) )
TypeError

如果第一个代码不是最后两个代码,那怎么办?

in 与那里的链接进行比较

True in [True] in [True]

等同于(除了中间的[True]被计算一次)

(True in [True]) and ([True] in [True])

也就是

True and False

也就是

False

这都与

相似
2 < 4 < 12

相当于(2 < 4) and (4 < 12).

的操作

print( True in [True] in [True] )

这实际上被解释为 - True in [True] and [True] in [True] 这给你错误,因为它变成了 - True and False

print( ( True in [True] ) in [True] )

首先检查 ( True in [True] ),所以你得到 True in [True],这是 True。

print( True in ( [True] in [True] ) )

检查第二部分,在第一部分之前,因为括号改变了顺序,所以它变成了 - True in TrueTrue 是一个布尔值,不是可迭代的,所以你不能使用 in,然后你会得到 TypeError