ホームページ  >  記事  >  バックエンド開発  >  Pythonのディープコピーとシャローコピー

Pythonのディープコピーとシャローコピー

巴扎黑
巴扎黑オリジナル
2016-11-29 11:35:41996ブラウズ

copy.copy 浅いコピーは親オブジェクトのみをコピーし、オブジェクトの内部の子オブジェクトはコピーしません。

copy.deepcopy ディープ コピー オブジェクトとそのサブオブジェクト

例:

>>> a=[1,2,3,4,['a' ,'b']]

>>> b=a # 参照を渡します。 b と a が同じメモリ領域を指しているのと同じです。 c と a が 2 つの別個のメモリ領域になったことに相当します

>>> d=copy.deepcopy(a) # ディープコピー。完全に独立したメモリ領域に相当します

>>>> append('c') # これは内部サブオブジェクトですつまり、依然として を指します。

の部分>>> print 'a',a

a [1, 2, 3, 4, ['a' , 'b', 'c'], 5]

>> > 'b',b

b [1, 2, 3, 4, ['a', 'b', 'c' ], 5]

>>> 'c',c を印刷

c [1, 2, 3, 4, ['a', 'b', 'c']]

>> print 'd',d

d [1, 2, 3, 4, ['a', 'b']]

>>> コピーした場合、それらは互いに独立しています。

copy.copy と同様、浅いコピーは親オブジェクトであるため実際に作成されます。親オブジェクトは影響を受けず、2 つの別々の領域があります。

結論: どちらをコピーしても、別のメモリ領域になります。元の記憶とは別のものです。どんなに修正しても私には影響しません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Python 関数の入門次の記事:Python 関数の入門