Python でのオブジェクトの割り当ては、実際にはオブジェクトへの参照です。オブジェクトが作成されて別の変数に割り当てられると、Python はオブジェクトをコピーせず、オブジェクトへの参照のみをコピーします。
#浅いコピー: 最も外側のオブジェクト自体がコピーされ、内部要素は参照付きでコピーされるだけです。つまり、オブジェクトは一度コピーされますが、オブジェクト内で参照されている他のオブジェクトはコピーされません。
ディープ コピー: 周辺要素と内部要素の両方が、参照ではなくオブジェクト自体をコピーします。つまり、オブジェクトが一度コピーされると、そのオブジェクト内で参照されている他のオブジェクトもコピーされます。
ディープ コピーとシャロー コピーの役割
1. メモリ使用量の削減
2. 将来的には、データのクリーニング、変更、または保存時に、データが変更された後に元のデータが見つからないように、元のデータのコピーを作成します。
関連する推奨事項: 「Python ビデオ チュートリアル 」
浅いコピー (コピー): 親オブジェクトをコピーしますが、オブジェクトの内部の子オブジェクトはコピーしません。
ディープ コピー (deepcopy): コピー モジュールの deepcopy メソッドは、親オブジェクトとその子オブジェクトを完全にコピーします。
>>>a = {1: [1,2,3]} >>> b = a.copy() >>> a, b({1: [1, 2, 3]}, {1: [1, 2, 3]}) >>> a[1].append(4) >>> a, b({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
深いコピーにはコピー モジュールの導入が必要です:
>>>import copy >>> c = copy.deepcopy(a) >>> a, c({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]}) >>> a[1].append(5) >>> a, c({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})
1. b = a.copy(): 浅いコピー、a と b は独立したオブジェクトですが、それらのサブオブジェクトですまだ Unified オブジェクトを指しています (参照です)。
2. b = copy.deepcopy(a): ディープ コピー、a と b は親オブジェクトとその子オブジェクトを完全にコピーし、完全に独立しています。
以上がPythonの深いコピーと浅いコピーの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。