.net column
.NET開発者のためのブログメディア

Pythonでのcopyとdeepcopyについて紹介!代入・copy関数・deepcopy関数の挙動の違いとは?

 
Pythonでのcopyとdeepcopyについて紹介!代入・copy関数・deepcopy関数の挙動の違いとは?
基本情報技術者試験の試験対策はこちら>>
SE
Pythonでのcopyとdeepcopyについて詳しく教えてください。
PM
分かりました。copyとdeepcopy、代入、copy関数、deepcopy関数の挙動の違いについて解説しましょう。

Pythonでのcopyとdeepcopyについて


今回は、Pythonでの代入・copy関数・deepcopy関数について紹介します。
コピー時に値のみコピーする方法や、参照元(アドレス)も含めてコピーする方法について、ソースコードを交えて紹介します。

Pythonでの代入・copy関数・deepcopy関数に興味のある方はぜひご覧ください。

代入

Pythonにおいて、変数代入後に代入元の変数を変更するとどうなるでしょうか。
実際のソースコードを見てみましょう。

実行結果は以下のようになります。代入では、文字列型や数字型は参照元はコピーされません。リスト型や辞書型は参照元がコピーされていることが分かります。

Pythonの代入時の挙動について説明しました。

copy関数

先ほどのサンプルでは、リスト型や辞書型は参照元がコピーされることを紹介しました。それでは都合が悪い場合、Pythonではcopy関数を使用します。
実際のソースコードを見てみましょう。

実行結果は以下のようになります。Pythonのcopy関数を使用すると、参照元がコピーされていないことが分かります。

多次元配列に対するcopy

では、多次元配列の場合はどうでしょうか。
実際のソースコードを見てみましょう。

実行結果は以下のようになります。
copy関数でコピーしていますが、参照元がコピーされています。

deepcopy関数

多次元配列の参照元がコピーされては都合が悪い場合、Pythonではdeepcopy関数を使用します。

実行結果は以下のようになります。Pythonのdeepcopy関数を使用すると、参照元がコピーされていないことが分かります。

SE
Pythonでのcopyとdeepcopyや代入、copy関数、deepcopy関数の挙動の違いについてよく分かりました。
PM
コピー時に値のみコピーする方法や、参照元(アドレス)も含めてコピーする方法について解説したソースコードを参考にご自身でソースコードを書いて理解を深めてください。

まとめ

いかがでしたでしょうか。Pythonでの代入・copy関数・deepcopy関数について紹介しました。
コピー時に値のみコピーする方法や、参照元も含めてコピーする方法について、ソースコードを交えて紹介しました。特徴を理解し、用途に応じて使い分けてください。

ぜひご自身でPythonのソースコードを書いて、理解を深めてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags