Memahami Operasi Penyalinan Berbeza: Tugasan Biasa, Salinan Cetek dan Salin Dalam
Dalam Python, terdapat pelbagai cara untuk membuat salinan pembolehubah dan objek. Operasi penugasan biasa, salinan cetek dan salinan dalam berbeza dalam cara mereka mengendalikan perhubungan antara pembolehubah asal dan yang disalin.
Tugasan Biasa
Operasi tugasan biasa (mis. , a = b) hanya halakan pembolehubah baharu ke objek sedia ada. Kedua-dua pembolehubah kini merujuk objek yang sama dalam ingatan. Perubahan yang dibuat kepada satu pembolehubah akan mempengaruhi yang lain.
Salinan Cetek
Salinan cetek mencipta objek baharu yang merujuk data asas yang sama seperti objek asal. Untuk objek tidak berubah (cth., rentetan, nombor), ini bersamaan dengan tugasan biasa. Walau bagaimanapun, untuk objek boleh ubah (cth., senarai, kamus), objek baharu mengandungi rujukan kepada objek asal.
Dalam coretan kod berikut:
import copy a = [1, 2, 3] b = copy.copy(a)
a dan b ialah kedua-dua senarai . Apabila menyalin menggunakan copy.copy, senarai baharu dibuat, tetapi ia mengandungi rujukan kepada elemen senarai yang sama seperti a. Oleh itu, mengubah suai b juga akan mengubah suai a.
Salinan Dalam
Salinan dalam mencipta objek baharu dan menyalin semua data daripada objek asal secara rekursif. Ini bermakna walaupun objek asal mengandungi rujukan kepada objek boleh ubah lain, objek baharu akan mempunyai salinan bebas objek tersebut.
Dalam coretan kod berikut:
import copy a = [1, 2, 3] c = copy.deepcopy(a)
c ialah a senarai baharu yang mengandungi salinan elemen senarainya sendiri. Sebarang perubahan yang dibuat kepada c tidak akan menjejaskan a.
Kesimpulan
Pilihan operasi penyalinan bergantung pada kes penggunaan tertentu. Untuk objek tidak berubah, tugasan biasa atau salinan cetek sudah memadai. Untuk objek boleh ubah, penyalinan dalam disyorkan untuk memastikan perubahan pada salinan tidak menjejaskan yang asal.
Atas ialah kandungan terperinci Apakah Perbezaan Antara Tugasan Biasa, Salinan Cetek dan Salinan Dalam dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!