Dalam Python, jika anda ingin menyalin objek, pengendali tugasan tidak akan berfungsi. Ia mewujudkan pengikatan antara sasaran dan objek, iaitu ia tidak pernah mencipta objek baharu. Ia hanya mencipta pembolehubah baharu yang berkongsi rujukan objek asal. Untuk menyelesaikan masalah ini, modul replikasi disediakan. Modul ini mempunyai operasi salinan cetek biasa dan salinan dalam.
Salinan cetek membina objek komposit baharu dan kemudian memasukkan rujukan ke dalam objek asal. Ia menyalin objek menggunakan −
copy.copy(x) Return a shallow copy of x.
Salinan dalam membina objek komposit baharu dan kemudian secara rekursif memasukkan salinan objek dalam objek asal ke dalamnya. Ia menyalin objek menggunakan kaedah berikut −
copy.deepcopy(x[, memo]) Return a deep copy of x. Here, memo is a dictionary of objects already copied during the current copying pass;
Masalah berikut mungkin berlaku apabila menggunakan operasi salinan dalam -
Rekursi boleh menyebabkan gelung rekursif.
Memandangkan salinan dalam menyalin segala-galanya, adalah mungkin untuk menyalin terlalu banyak, seperti data yang anda ingin kongsi antara replika.
Walau bagaimanapun, kaedah deepcopy() mengelakkan masalah ini. Mari lihat bagaimana −
Menyimpan kamus memo objek yang disalin semasa proses penyalinan semasa
Benarkan kelas yang ditentukan pengguna untuk mengatasi operasi penyalinan atau set komponen yang disalin.
Untuk memasang modul salinan, gunakan pip −
pip install copy
Gunakan modul salinan selepas pemasangan −
import copy
Kami akan menggunakan salinan cetek untuk menyalin objek. Ia mencipta objek baharu untuk menyimpan rujukan kepada elemen asal. Mari lihat contoh −
import copy # Create a List myList = [[5, 10], [15, 20]] # Display the list print("List = ", myList) # Shallow Copy myList2 = copy.copy(myList) # Display the copy of the List print("New copy of the list =", myList2)
List = [[5, 10], [15, 20]] New copy of the list = [[5, 10], [15, 20]]
Dalam contoh di atas, kami membuat salinan cetek senarai menggunakan kaedah copy().
Kami akan menggunakan kaedah deepcopy() untuk menyalin dalam objek. Salinan dalam juga mencipta objek baharu. Mari lihat contoh −
import copy # Create a List myList = [[5, 10], [15, 20]] # Display the list print("List = ", myList) # Deep Copy myList2 = copy.deepcopy(myList) # Display the copy of the List print("New copy of the list =", myList2)
List = [[5, 10], [15, 20]] New copy of the list = [[5, 10], [15, 20]]
Atas ialah kandungan terperinci Bagaimana untuk menyalin objek dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!