初学Pythonノート【32】copyとdeepcopy
1993 ワード
【copy】
浅いレプリケーション(shallow copy)は、独立したオブジェクトが単独で存在するわけではありません.彼は、既存のデータブロックに新しいラベルを付けるだけなので、ラベルの1つが変更されると、データブロックが変化し、別のラベルも変化します.これは私たちの普通の意味でのレプリケーションとは違います
【deepcopy】
私たちの一般的な意味の複製は深複製(deep copy)であり、複製されたオブジェクトが独立した新しい個体として完全に再複製される.したがって、既存のコピーされたオブジェクトを変更することは、コピーされた新しいオブジェクトに影響を与えません.
浅いレプリケーション(shallow copy)は、独立したオブジェクトが単独で存在するわけではありません.彼は、既存のデータブロックに新しいラベルを付けるだけなので、ラベルの1つが変更されると、データブロックが変化し、別のラベルも変化します.これは私たちの普通の意味でのレプリケーションとは違います
【deepcopy】
私たちの一般的な意味の複製は深複製(deep copy)であり、複製されたオブジェクトが独立した新しい個体として完全に再複製される.したがって、既存のコピーされたオブジェクトを変更することは、コピーされた新しいオブジェクトに影響を与えません.
import copy
class MyCopy:
def __init__(self, value):
self.value = value
def __repr__(self):
return str(self.value)
foo = MyCopy(7)
a = ["foo", foo]
b = a[:]
c = list(a)
d = copy.copy(a)
e = copy.deepcopy(a)
a.append("abc")
foo.value = 17
print("original: %r
slice: %r
list(): %r
"
"copy(): %r
deepcopy(): %r
"
% (a, b, c, d, e))