来自in运算子的意外结果-Python

发布于 2021-01-29 16:50:46

item = 2
>>> seq = [1,2,3]
>>> print (item in seq)
True
>>> print (item in seq is True)
False

为什么第二条print语句输出False

关注者
0
被浏览
43
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    inis是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)
    

    单击此处获取文档



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看