Skip to main content
 首页 » 编程设计

python之copy.copy 与 python 中的赋值不同吗

2025年05月04日9mate10pro

我遇到过一段代码,乍一看似乎毫无意义。但我意识到这可能会产生一些我不知道的未知含义,因为 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.

  1. 这段代码有作用​​吗?它正在复制的节点取自场景对象列表。它是否只创建类的根级别的副本,以便它可以更改变量(名称)但不影响列表中的原始文件?节点类包含多个节点子节点。

  2. 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]