python - python是否在分配时复制对象?

标签 python copy assign

<分区>

我读到 python 中的赋值并不像在 c 中那样复制它,在 c 中它分配一个指向对象的指针。

但是当我调试这个函数时:

def popall(self):
    objs = self.curstack
    self.curstack = []
    return objs

看起来像是在进行某种复制。此函数运行后 obis 充满了东西,而 self.curstack 是空的......

所以一些复制正在进行中。是深还是浅?

最佳答案

它不复制任何东西。只是分配给 self.curstack 不会修改任何 self.curstack 用来引用。它只是让 self.curstack 引用其他东西。

这样想。 self.curstack 指向一些东西。使用 objs = self.curstack 你可以让 objs 指向相同的东西。使用 self.curstack = [],您可以使 self.curstack 指向一个空列表。这不会删除 self.curstack 过去指向的任何内容;那东西还在那里,objs 仍然指向它。

This article使用标签标记的一个很好的类比来解释它。

关于python - python是否在分配时复制对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27812789/

相关文章:

excel - VBA Excel 将文本文件复制到工作表

python - Pandas:将数据写入 MySQL 时毫秒数下降

vba - 将行从工作表复制到新工作表的末尾 Excel VBA

Bash:将文件复制到最新目录

Python print 函数不返回更新后的变量

operators - Liquid:如何将运算符的输出分配给变量?

java - 在java中一次进行多项分配

javascript - 在 JavaScript 中使用 Pylons 全局变量(转义括号)

python - 没有这样的文件或目录 : . ../part.0.parquet

python - 通过文本单词列表或 csv 批量检查我的 s3 存储桶权限