Python是否将写时复制用于列表的副本?

Ita*_*man 2 python copy-on-write

假设我复制一个现有列表:

existing_list = [ 1, 2, 3 ];
copied_list = existing_list[:]

...

copied_list[2] = 'a' // COW happens here
Run Code Online (Sandbox Code Playgroud)

[一些编辑]

我听说当copyed_list或existing_list发生突变时,Python使用写时复制。这是真的?

在我看来,这就像一个过于复杂的事情,需要到处锁定(考虑多线程)。

为了清楚起见:我不是在寻找COW体现。我只是想了解什么是Python标准行为。

Ray*_*ger 5

没有写时复制。运行时copied_list = existing_list[:],将立即构建并填充一个新列表。这是源:http : //hg.python.org/cpython/file/2.7/Objects/listobject.c#l467