Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Tugasan Objek Python Berfungsi, dan Bagaimana Saya Boleh Mencipta Salinan Bebas?

Bagaimanakah Tugasan Objek Python Berfungsi, dan Bagaimana Saya Boleh Mencipta Salinan Bebas?

Barbara Streisand
Lepaskan: 2024-12-07 01:11:15
asal
552 orang telah melayarinya

How Does Python's Object Assignment Work, and How Can I Create Independent Copies?

Memahami Tugasan Objek dalam Python

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

Output Jangkaan:

{}
{}
{'hello': 'goodbye'}
Salin selepas log masuk

Output Sebenar:

{'hello': 'goodbye'}
{'hello': 'goodbye'}
{'hello': 'goodbye'}
Salin selepas log masuk

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.

Menyelesaikan Isu Tugasan Objek

Untuk mencapai gelagat yang diingini untuk mencipta salinan bebas, Python menyediakan beberapa pilihan:

  1. kaedah dict.copy(): Kaedah ini mencipta salinan cetek kamus, menyalin semua pasangan nilai kuncinya ke dalam objek baharu.
dict_a = {1: 2}
dict_b = dict_a.copy()
dict_b[3] = 4

print(dict_a)
print(dict_b)
Salin selepas log masuk

Output:

{1: 2}
{1: 2, 3: 4}
Salin selepas log masuk
  1. salinan. deepcopy() function: Fungsi ini mencipta salinan mendalam kamus, termasuk semua bersarang objek.
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)
Salin selepas log masuk

Output:

{1: 2, 'nested': {3: 4}}
{1: 2, 'nested': {3: 4, 5: 6}}
Salin selepas log masuk

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!

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