Bagaimana untuk Membuat Salinan Bebas Objek dalam Python?

Mary-Kate Olsen
Lepaskan: 2024-11-03 17:37:29
asal
712 orang telah melayarinya

How to Create Independent Copies of Objects in Python?

Menyalin Objek dalam Python: Kejadian Bebas

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan