来自in运算子的意外结果-Python
item = 2
>>> seq = [1,2,3]
>>> print (item in seq)
True
>>> print (item in seq is True)
False
为什么第二条print
语句输出False
?
-
in
和is
是Python中的比较运算符,在这方面与<
和相同==
。一般来说,expr1 <comparison1> expr2 <comparison2> expr3
被视为
(expr1 <comparison1> expr2) and (expr2 <comparison2> expr3)
除了那只
expr2
被评估一次。这就是为什么,例如0 <= i < n
可以正常工作。但是,它适用于 任何 链式比较运算符。在您的示例中
item in seq is True
被视为
(item in seq) and (seq is True)
该
seq is True
部分为False,因此整个表达式为False。为了获得您可能想要的目的,请使用括号来更改分组:print((item in seq) is True)