ホームページ >バックエンド開発 >Python チュートリアル >Python の浅いコピーと深いコピー: いつどちらを使用するか?
浅いコピー、深いコピー、割り当て操作の理解
通常の割り当ての非効率
通常の代入操作では、新しいオブジェクトを作成するのではなく、既存のオブジェクトへの参照を作成するだけです。 1つ。元のオブジェクトへの変更はコピーされたオブジェクトにも反映されるため、予期しない変更が発生する可能性があります。
浅いコピー: サーフェスレベルの複製
浅いコピーcopy メソッドは、新しいオブジェクトを構築し、元のオブジェクト内に含まれる既存のオブジェクトへの参照を挿入します。これは、元のオブジェクトの子オブジェクトへの変更が浅いコピーにも反映されることを意味します。
ディープ コピー: 完全なレプリケーション
ディープ コピー メソッドは、新しいオブジェクトを作成します。そして、元のオブジェクト内で見つかったオブジェクトのコピーを再帰的に挿入します。これにより、元のオブジェクトの子オブジェクトに加えられた変更がディープ コピーに影響を与えないことが保証されます。
可変オブジェクトと不変オブジェクトの影響
これらのコピー操作は、次のオブジェクトに対してさまざまな影響を及ぼします。可変オブジェクトと不変オブジェクト:
例
次のコードを考えてみましょう:
import copy a = "deepak" b = (1, 2, 3, 4) c = [1, 2, 3, 4] d = {1: 10, 2: 20, 3: 30} a1 = copy.copy(a) b1 = copy.copy(b) c1 = copy.copy(c) d1 = copy.copy(d)
文字列やタプルのような不変オブジェクトの場合 (a と bこの場合)、浅いコピーと深いコピーの両方で、異なるメモリ アドレスを持つ新しいオブジェクトが作成されます。ただし、リストや辞書 (c および d) などの変更可能なオブジェクトの場合、浅いコピーでは元のオブジェクトへの新しい参照が作成され、深いコピーではこれらのオブジェクトの新しいインスタンスが作成されます。
以上がPython の浅いコピーと深いコピー: いつどちらを使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。