Dalam Python, pengendali tugasan, seperti =, tidak membuat salinan objek. Sebaliknya, mereka merujuk kepada objek sedia ada dalam ingatan. Tingkah laku ini boleh membawa kepada akibat yang tidak diingini, seperti yang ditunjukkan dalam kod berikut:
dict_a = dict_b = dict_c = {} dict_c['hello'] = 'goodbye' print(dict_a) print(dict_b) print(dict_c)
Output Jangkaan:
{} {} {'hello': 'goodbye'}
Output Sebenar:
{'hello': 'goodbye'} {'hello': 'goodbye'} {'hello': 'goodbye'}
Dalam ini contoh, kami menjangkakan untuk mencipta tiga kamus bebas. Walau bagaimanapun, keputusan menunjukkan bahawa dict_a, dict_b, dan dict_c semuanya merujuk kepada objek kamus yang sama. Menetapkan kunci kepada dict_c mengubah suai kamus kongsi, yang ditunjukkan dalam ketiga-tiga pembolehubah.
Untuk mencapai gelagat yang diingini untuk mencipta salinan bebas, Python menyediakan beberapa pilihan:
dict_a = {1: 2} dict_b = dict_a.copy() dict_b[3] = 4 print(dict_a) print(dict_b)
Output:
{1: 2} {1: 2, 3: 4}
import copy dict_a = {1: 2, 'nested': {3: 4}} dict_b = copy.deepcopy(dict_a) dict_b['nested'][5] = 6 print(dict_a) print(dict_b)
Output:
{1: 2, 'nested': {3: 4}} {1: 2, 'nested': {3: 4, 5: 6}}
Dengan menggunakan kaedah ini, adalah mungkin untuk mengawal penetapan objek dalam Python dan menghalang pengubahsuaian yang tidak diingini pada objek kongsi.
Atas ialah kandungan terperinci Bagaimanakah Tugasan Objek Python Berfungsi, dan Bagaimana Saya Boleh Mencipta Salinan Bebas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!