Skip to main content
 首页 » 编程设计

python之引用或复制

2025年05月04日10itcoder

我刚开始使用 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 指向不同的字符串。