Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencipta Salinan Objek yang Benar-benar Bebas dalam Python?

Bagaimana untuk Mencipta Salinan Objek yang Benar-benar Bebas dalam Python?

DDD
DDDasal
2024-11-03 17:05:03821semak imbas

How to Create Truly Independent Copies of Objects in 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!

Kenyataan:
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