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

Python中为什么单个变量不能一次比对多个值,需逐个校验?

核心原因

本质是Python中or运算符的求值规则导致的差异。

  • 第一种写法的问题
    括号里的("apple" or "Orange" or "Mango")会先独立运算。Python的or遵循短路求值规则:会从左到右依次判断表达式的布尔值,返回第一个为「真」的结果,后面的表达式直接忽略不计算。
    在Python中所有非空字符串的布尔值都是True,所以第一个值"apple"已经是真值,整个括号的运算结果直接就是"apple",所以你的第一个判断逻辑实际等价于:
if x == "apple":

自然只有输入apple的时候才会返回正确结果。

  • 第二种写法的逻辑
    你把相等判断和or拆开写之后,完整的判断逻辑是(x == "apple") or (x == "Orange") or (x == "Mango"),每一个相等判断都是独立计算的:如果第一个相等判断不成立,才会继续判断下一个,直到找到成立的条件或者全部判断完成,完全符合你要判断x是否是三个值中任意一个的需求,所以运行正常。

拓展优化写法

日常写这种多值匹配的判断,更简洁的写法是用成员运算符in,待匹配值较多时性能也更高:

x = input("Type a fruit's name: ")
if x in {"apple", "Orange", "Mango"}:
    print("that's a fruit")
else:
    print("Not a fruit")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:54:04