Rumah > pembangunan bahagian belakang > Tutorial Python > Apakah Perbezaan Antara Tugasan Biasa, Salinan Cetek dan Salinan Dalam dalam Python?

Apakah Perbezaan Antara Tugasan Biasa, Salinan Cetek dan Salinan Dalam dalam Python?

Mary-Kate Olsen
Lepaskan: 2024-12-31 16:25:15
asal
190 orang telah melayarinya

What's the Difference Between Normal Assignment, Shallow Copy, and Deep Copy in Python?

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

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

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!

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