gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:46:44 26 4
gpt4 key购买 nike

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

关于python - copy.copy 与 python 中的赋值不同吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36285916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com