python - python中两个具有相同值的不同字符串对象

标签 python string object

让我有一个字符串对象 a="ABC" 。现在我想创建一个不同的对象 b="ABC"两者皆有id(a)id(b)分离。在Python中可以吗?

最佳答案

这是一个实现细节。如果两个变量引用同一个对象(a is b 为 true),那么它们必须相等(a == b 应为 true)。但至少对于不可变对象(immutable对象),Python 没有指定它的作用。

标准 CPython 实现对小整数使用通用 id:

a = 1
b = 1
a is b   # True

理由是它们很可能在同一个程序的多个地方使用,共享一个公共(public)变量可以节省一些内存。

对于字符串也是这样做的,当解释器可以很容易地猜测它们将共享相同的值时。 Python 3.6 上的示例

a = "abc"
b = 'ab' + 'c'
c = ''.join((chr(i) for i in range(65, 68)))
a is b      # gives True
a is c      # gives False

TL/DR:两个相等字符串是否共享相同的 id 是一个实现细节,不应依赖。

关于python - python中两个具有相同值的不同字符串对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60429672/

相关文章:

python - Django prefetch_related 缓存不反射(reflect)更改

java - 如何在Java中将String的第一个字母大写?

javascript - underscore.js toArray 函数用于逗号分隔值

javascript - 为什么即使条件为真也会执行 else block ?

c# - 如何访问对象的某些(私有(private))属性?

python - 如何调用派生类方法?

Python 不工作 : ImportError: No module named 'logging'

python - 概率函数生成值而不是随机调用

c# - foreach 中分隔逗号和行

java - 用新对象更新 ArrayList+删除旧对象