Adakah Python Menyalin Objek pada Tugasan?
Dalam Python, penetapan pembolehubah tidak mencipta salinan objek tetapi merujuk kepada mereka. Tingkah laku ini boleh membawa kepada hasil yang tidak dijangka.
Contoh:
Pertimbangkan kod berikut:
dict_a = dict_b = dict_c = {} dict_c['hello'] = 'goodbye' print(dict_a) print(dict_b) print(dict_c)
Tanpa diduga, kod ini menghasilkan yang berikut output:
{'hello': 'goodbye'} {'hello': 'goodbye'} {'hello': 'goodbye'}
Penjelasan:
Apabila anda menetapkan dict_a = dict_b = dict_c = {}, anda tidak mencipta tiga kamus berasingan. Sebaliknya, anda mencipta satu kamus dan memberikan tiga nama (rujukan) kepadanya. Akibatnya, sebarang pengubahsuaian yang dibuat pada salah satu rujukan mempengaruhi kesemuanya.
Penyelesaian:
Untuk membuat salinan bebas objek, anda boleh menggunakan sama ada dict kaedah .copy() atau fungsi copy.deepcopy().
Menggunakan dict.copy():
dict_a = dict_b.copy() dict_c = dict_b.copy()
Menggunakan copy.deepcopy():
import copy dict_a = copy.deepcopy(dict_b) dict_c = copy.deepcopy(dict_b)
Atas ialah kandungan terperinci Adakah Python Mencipta Salinan atau Rujukan Apabila Menetapkan Objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!