我刚开始使用 Python 3。在一本 Python 书中,我读到可以强制解释器制作实例的副本,而不是使用切片符号创建引用。
这应该创建对现有 s1 实例的引用:
s1 = "Test"
s2 = s1
print(s1 == s2)
print(s1 is s2)
这应该创建一个新实例:
s1 = "Test"
s2 = s1[:]
print(s1 == s2)
print(s1 is s2)
当运行上面的示例时,两者都返回相同的结果,即对 s1 的引用。 有人可以解释为什么它不像书中描述的那样工作吗?是我的错误,还是书上的错误?
请您参考如下方法:
这对于 可变 数据类型(例如列表)是正确的(即,如您预期的那样使用 s1 = [1,2,3])。
但是字符串和例如python 中的元组是不可变的(这意味着它们无法更改,您只能创建新实例)。 python 解释器没有理由创建此类对象的副本,因为您不能通过 s1 影响 s2,反之亦然,您只能让 s1 或 s2 指向不同的字符串。
