我遇到过一段代码,乍一看似乎毫无意义。但我意识到这可能会产生一些我不知道的未知含义,因为 Python 不是我最熟悉的语言。
import copy
node = copy.copy(node)
阅读副本的文档是这样说的
copy.copy(x) Return a shallow copy of x.
A shallow copy constructs a new compound object and then (to the extent possible) inserts references into it to the objects found in the original.
这段代码有作用吗?它正在复制的节点取自场景对象列表。它是否只创建类的根级别的副本,以便它可以更改变量(名称)但不影响列表中的原始文件?节点类包含多个节点子节点。
copy.copy(node)
与node = node
有何不同?一个构造一个新对象而另一个简单地指向同一个对象?
最佳答案
赋值运算符(=
)只创建一个对象的引用,并且会创建一个引用相同内存地址的新变量。
复制会在内存中创建一个新对象,然后将变量赋值给它。
例如:
import copy
node = [0, 1]
node2 = node
node3 = copy.copy(node)
node2.append(5)
print(node)
print(node2)
print(node3)
打印出来:
[0, 1, 5]
[0, 1, 5]
[0, 1]
关于python - copy.copy 与 python 中的赋值不同吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36285916/