Python: Mengapa Menukar Pembolehubah Salinan Mempengaruhi Pembolehubah Asal
Dalam Python, anda mungkin menghadapi gelagat pelik apabila pengubahsuaian dibuat pada salinan pembolehubah kelihatan mengubah pembolehubah asal juga. Ini berlaku kerana pembolehubah Python menyimpan rujukan dan bukannya nilai sebenar.
Untuk memahami perkara ini, pertimbangkan situasi yang diterangkan:
org_list = ['y', 'c', 'gdp', 'cap'] copy_list = org_list # Pass reference to org_list copy_list.append('hum') print(copy_list) # ['y', 'c', 'gdp', 'cap', 'hum'] print(org_list) # ['y', 'c', 'gdp', 'cap', 'hum']
Apabila anda menetapkan copy_list kepada org_list, anda tidak membuat senarai baharu tetapi sebaliknya mewujudkan rujukan kepada objek senarai yang sama dalam ingatan. Oleh itu, sebarang perubahan pada sama ada copy_list atau org_list secara langsung mempengaruhi kedua-dua pembolehubah.
Untuk mencipta salinan yang benar-benar bebas, anda perlu menghantar salinan data sebenar, bukannya rujukan. Ini boleh dilakukan dengan menggunakan operator tugasan hirisan:
copy_list = org_list[:] # Create a deep copy by slicing
Dengan menghiris senarai asal, anda mencipta objek senarai baharu dengan salinan datanya sendiri. Sebarang pengubahsuaian yang dibuat pada copy_list tidak akan menjejaskan org_list, dan begitu juga sebaliknya.
Atas ialah kandungan terperinci Mengapakah Menukar Pembolehubah Salin Mempengaruhi Pembolehubah Asal dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!