登录
首页 >  文章 >  python教程

Python中is与==区别详解

时间:2026-05-27 17:37:39 204浏览 收藏

在Python中,`==`和`is`看似都是比较操作符,实则本质迥异:`==`判断两个对象的值是否相等,而`is`严格检查它们是否为同一内存地址的对象;理解这一区别至关重要——列表内容相同则`==`为True但`is`通常为False,小整数因缓存机制可能让`is`也返回True,但大整数或字符串不可依赖此行为;唯一被广泛推荐使用`is`的场景是判断`None`,因其作为单例保证了身份唯一性。掌握“`==`看内容,`is`看本体”,能帮你避开隐蔽的逻辑陷阱,写出更健壮、更符合Python之道的代码。

Python is 与 == 的区别

在 Python 中,is== 都用于比较,但它们的作用完全不同,理解它们的区别对编写正确的代码非常重要。

== 比较的是值是否相等

== 判断两个对象的是否相同。只要内容一样,就返回 True。

例如:
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b)  # 输出: True,因为两个列表的内容相同

即使 a 和 b 是两个不同的对象(内存地址不同),只要它们包含的元素一样,== 就认为它们“相等”。

is 比较的是对象的身份(内存地址)

is 判断两个变量是否指向同一个对象,也就是它们的内存地址是否相同。

继续上面的例子:
print(a is b)  # 输出: False,因为 a 和 b 是两个不同的列表对象

如果让 b 指向 a,情况就不同了:

b = a
print(a is b)  # 输出: True,因为 a 和 b 现在是同一个对象

特殊情况:小整数和字符串的缓存

Python 出于性能考虑,会对一些不可变对象进行缓存,比如小整数(-5 到 256)和某些字符串。

a = 100
b = 100
print(a == b)  # True
print(a is b)  # 通常也是 True,因为小整数被缓存了

但超出范围就不一定了:

a = 1000
b = 1000
print(a == b)  # True
print(a is b)  # 可能是 False,取决于解释器实现

所以不能依赖 is 来判断数值或字符串的相等性。

什么时候用 is?

is 最常用于判断是否为 None:

if obj is None:
    print("对象为空")

这是推荐做法,因为 None 是单例,只有一个实例存在,使用 is 更准确、更高效。

基本上就这些。记住:== 看内容,is 看是不是同一个东西。不复杂但容易忽略。

本篇关于《Python中is与==区别详解》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>