ホームページ > バックエンド開発 > Python チュートリアル > Python はオブジェクトを割り当てるときにコピーまたは参照を作成しますか?

Python はオブジェクトを割り当てるときにコピーまたは参照を作成しますか?

DDD
リリース: 2024-12-16 18:50:15
オリジナル
165 人が閲覧しました

Does Python Create Copies or References When Assigning Objects?

Python は代入時にオブジェクトをコピーしますか?

Python では、変数の代入によってオブジェクトのコピーが作成されるのではなく、オブジェクトへの参照が作成されます。この動作により、予期しない結果が生じる可能性があります。

例:

次のコードを考えてみましょう:

dict_a = dict_b = dict_c = {}
dict_c['hello'] = 'goodbye'

print(dict_a)
print(dict_b)
print(dict_c)
ログイン後にコピー

予期せず、このコードは次の結果を生成します。出力:

{'hello': 'goodbye'}
{'hello': 'goodbye'}
{'hello': 'goodbye'}
ログイン後にコピー

説明:

dict_a = dict_b = dict_c = {} を割り当てる場合、3 つの別々の辞書を作成するわけではありません。代わりに、1 つの辞書を作成し、それに 3 つの名前 (参照) を割り当てます。その結果、参照の 1 つに加えられた変更はすべての参照に影響します。

解決策:

オブジェクトの独立したコピーを作成するには、次のいずれかの dict を使用できます。 .copy() メソッドまたは copy.deepcopy() 関数。

の使用dict.copy():

dict_a = dict_b.copy()
dict_c = dict_b.copy()
ログイン後にコピー

copy.deepcopy() の使用:

import copy
dict_a = copy.deepcopy(dict_b)
dict_c = copy.deepcopy(dict_b)
ログイン後にコピー

以上がPython はオブジェクトを割り当てるときにコピーまたは参照を作成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート