《Python 里的真假之辨:深度解析 is 与 ==,与 CPython 的隐秘性能魔法》
🧭 引言:你真的理解 == 和 is 吗?
在 Python 中,有些初看简单的问题,其实藏着深入理解语言内部的关键线索。
比如:
a = 256
b = 256
print(a is b) # True
a = 257
b = 257
print(a is b) # False
这对很多初学者来说是个“灵魂拷问”。为什么两个数值一样,前一个返回 True,后一个却返回 False?
本篇文章,我们将围绕 Python 中的 ==
与 is
展开深入剖析,从语义出发、结合底层实现,透过 CPython 的缓存机制,探索 Python 在性能与内存管理上的设计智慧。
🧠 一、基础认知:== 与 is 的语义区别
==
:值相等(value equality)
用于比较两个对象所“代表的值”是否相等,底层调用的是对象的 __eq__()
方法。
x = [1, 2, 3]
y = [1, 2, 3]
print(x == y)