You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何两行Python表达式返回False?另一行返回True的原因

Python链式比较的规则解析

你遇到的问题核心不是运算符优先级,而是Python的比较运算符支持链式写法——包括in、is、==这类运算符,链式比较会被拆解成多个两两比较,只有所有比较结果都为True时,整个表达式才返回True。

第一个返回False的表达式:"a" in ["a", "b"] is True

这个表达式会被Python拆解为:
("a" in ["a", "b"]) and (["a", "b"] is True)

  • 第一部分"a" in ["a", "b"]结果为True
  • 第二部分["a", "b"] is True结果为False(列表对象和布尔值True是完全不同的对象)
    逻辑与运算中只要有一个False,整体结果就是False,所以整个表达式返回False。

第二个返回False的表达式:False is False in [True]

同样被拆解为:
(False is False) and (False in [True])

  • 第一部分False is False结果为True(Python中布尔值是单例对象)
  • 第二部分False in [True]结果为False(列表中仅包含True)
    逻辑与运算后整体结果为False。

返回True的表达式:"a" in ["a", "b"] == ["a", "b"]

拆解为:
("a" in ["a", "b"]) and (["a", "b"] == ["a", "b"])

  • 第一部分"a" in ["a", "b"]是True
  • 第二部分["a", "b"] == ["a", "b"]是True(列表内容相同,==比较值相等)
    两个True做逻辑与运算,结果自然是True。

如果不想使用链式比较,可用括号明确分组,比如("a" in ["a", "b"]) is True,这样结果就会是True。

内容的提问来源于stack exchange,提问作者Jun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:32:32