Pernyataan Masalah:
Dalam Python, mencipta salinan objek boleh kelihatan semudah memberikan satu objek kepada yang lain. Walau bagaimanapun, tugasan mudah ini mencipta rujukan kepada objek asal dan bukannya contoh bebas baharu. Pengubahsuaian pada satu objek akan disebarkan kepada objek yang lain. Ini boleh membawa kepada tingkah laku yang tidak dijangka dan potensi pepijat.
Penyelesaian: Deep Copying dengan copy.deepcopy()
Untuk mencipta salinan bebas yang tulen bagi objek, kami menggunakan fungsi copy.deepcopy() daripada modul salinan. Fungsi ini melaksanakan salinan dalam, menyalin secara rekursif semua atribut dan objek anak objek asal. Salinan yang terhasil ialah objek bebas dengan lokasi dan nilai ingatannya sendiri.
Contoh:
<code class="python">import copy original_obj = {'name': 'Alice', 'age': 30} copy_obj = copy.deepcopy(original_obj) copy_obj['name'] = 'Bob' # Modify copy print(original_obj) # Output: {'name': 'Alice', 'age': 30} (Unchanged) print(copy_obj) # Output: {'name': 'Bob', 'age': 30} (Independent)</code>
Dalam kes ini, copy_obj benar-benar bebas daripada original_obj. Mengubah suai satu tidak menjejaskan yang lain. Ini membolehkan anda mencipta berbilang objek dengan nilai yang berbeza sambil berkongsi sifat awal yang sama.
Nota:
Penyalinan cetek, yang boleh dicapai dengan copy.copy(), hanya menyalin nilai struktur data, meninggalkan sebarang rujukan yang terkandung seperti sedia ada. Penyalinan mendalam biasanya lebih disukai untuk memastikan kebebasan objek.
Atas ialah kandungan terperinci Bagaimana untuk Membuat Salinan Bebas Objek dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!