Python 技巧:== 与 is 的区别
作者:野牛程序员:2025-12-22 10:50:05python阅读 1992
Python 技巧:== 与 is 的区别
# /*
# Python 技巧:== 与 is 的区别
# --------------------------------------------------------
# == 比较“值是否相等”
# is 比较“是否为同一个对象(同一块内存)”
#
# == → 判断内容
# is → 判断身份
#
# 一般用于:
# == 用于比较数值、字符串、列表内容…
# is 用于检查 None、True、False 或单例对象
# */
# --------------------------------------------------------
# 值相同,但对象不同
a = [1, 2, 3]
b = [1, 2, 3]
print("a == b:", a == b) # True(内容一致)
print("a is b:", a is b) # False(不同对象)
# --------------------------------------------------------
# 小整数缓存带来的 is True 情况(解释器优化)
x = 10
y = 10
print("x is y:", x is y) # True(小整数池复用对象)
# --------------------------------------------------------
# None 判断必须用 is
n = None
print("n is None:", n is None)
# --------------------------------------------------------
# 字符串有时也会由于缓存而 is True(但不保证)
s1 = "hello"
s2 = "hello"
print("s1 == s2:", s1 == s2)
print("s1 is s2:", s1 is s2) # 常为 True,但不可依赖
# --------------------------------------------------------
# 要点总结:
# 1) == 比较值;is 比较对象身份;
# 2) list / dict / tuple 的 is 基本为 False(不同对象);
# 3) 小整数与部分字符串因缓存可能使 is 为 True;
# 4) None 判断统一使用 is;
# 5) 不要用 is 判断数值或字符串内容。
# */
#
# a == b: True
# a is b: False
# x is y: True
# n is None: True
# s1 == s2: True
# s1 is s2: True野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

