ホームページ >バックエンド開発 >Python チュートリアル >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'} {'hello': 'goodbye'}
説明:
Python 変数はメモリ内のオブジェクトを参照します。 dict_a = dict_b を割り当てる場合、辞書オブジェクト自体をコピーするのではなく、dict_b と同じメモリ アドレスへの参照を割り当てます。これは、1 つのディクショナリに加えられた変更は、同じ基になるオブジェクトを指しているため、3 つの変数すべてに影響を与えることを意味します。
解決策:
ディクショナリの真のコピーを作成するにはPython でオブジェクトを作成するには、copy 関数または copy.deepcopy 関数を使用する必要があります。次のコードは、元の辞書の独立したコピーを作成します:
dict_a = dict_b.copy() # Shallow copy dict_a = copy.deepcopy(dict_b) # Deep copy
これらの関数を使用すると、1 つの辞書に加えられた変更が他の辞書に影響を与えないようにすることができます。
以上がPython の割り当てではオブジェクトのコピーまたは参照が作成されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。