让我有一个字符串对象 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/