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 サイトの他の関連記事を参照してください。