Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mencipta Salinan Objek yang Benar-benar Bebas dalam Python?
Menduakan Objek dalam Python: Panduan Komprehensif
Mencipta salinan objek ialah tugas asas dalam pengaturcaraan Python, terutamanya apabila berurusan dengan data yang kompleks struktur. Artikel ini menyelidiki selok-belok penyalinan objek dalam Python, terutamanya memfokuskan pada mencipta objek bebas yang tidak terjejas oleh perubahan yang dibuat kepada yang asal.
Penyalinan Cetek dan Dalam
Dalam Python, terdapat dua kaedah utama untuk menyalin objek: penyalinan cetek dan penyalinan dalam. Penyalinan cetek mencipta objek baharu yang merujuk medan tidak berubah yang sama (cth., integer, rentetan) seperti yang asal, tetapi mencipta salinan baharu medan boleh ubah (cth., senarai, kamus).
Sebagai contoh, pertimbangkan perkara berikut coretan kod:
<code class="python">original_list = [1, 2, 3] new_list = original_list[:] # Shallow copy</code>
Semasa new_list dan original_list muncul menjadi objek berasingan, sebarang perubahan yang dibuat pada satu senarai akan ditunjukkan dalam senarai yang lain, kerana kedua-duanya merujuk kepada data asas yang sama.
Mencipta Objek Bebas Sepenuhnya
Untuk mencipta objek yang benar-benar bebas, kita mesti menggunakan penyalinan yang mendalam. Ini melibatkan mencipta salinan baharu setiap medan, termasuk struktur boleh ubah bersarang. Fungsi copy.deepcopy() Python menyediakan fungsi ini.
Mari ubah suai contoh kami yang terdahulu:
<code class="python">import copy original_list = [1, 2, [4, 5]] new_list = copy.deepcopy(original_list)</code>
Sekarang, jika kita membuat perubahan kepada new_list, ia tidak akan menjejaskan senarai_semula:
<code class="python">new_list[2].append(6) print(original_list) # Output: [1, 2, [4, 5]] print(new_list) # Output: [1, 2, [4, 5, 6]]</code>
Kesimpulan
Oleh memanfaatkan fungsi copy.deepcopy(), pengaturcara boleh mencipta salinan objek bebas sepenuhnya, memastikan perubahan yang dibuat pada satu tidak menjejaskan yang lain. Memahami perbezaan antara penyalinan cetek dan mendalam adalah penting untuk manipulasi objek yang berkesan dalam Python.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Salinan Objek yang Benar-benar Bebas dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!