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

为何部分Python对象必然指向唯一实例?

关于Python中对象同一性(is判断)的疑问

我明确知道is用于检查对象的id是否匹配(即是否为同一个对象),==用于检查值是否匹配,现在的问题不是要区分这两者的用法,而是想搞懂以下现象的底层原因:

>>> x = 3
>>> y = 3
>>> x is y
True
>>> m = 3.0
>>> n = 3.0
>>> m is n
False
>>> x = "spam"
>>> y = "spam"
>>> x is y
True
>>> a = ("s","p","a","m")
>>> b = ("s","p","a","m")
>>> a is b
False

从上述示例可见,str和int类型变量在值相同时,会自动指向同一对象,但tuple或float类型却并非如此。我希望了解该现象的本质原因,而非仅知晓各类型的表现情况。

此外,bool和NoneType也存在类似str、int的现象,但function没有。我已排除不可变性的影响——毕竟整数与浮点数均为不可变类型,却表现出差异。

还有一个特殊场景会改变该行为:

>>> def same(x, y):
...     u = x
...     v = y
...     return u is v
...
>>> same(1.0, 1.0)
True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:37:07