Memahami Gelagat Tidak Dijangka =" pada Senarai dalam Python
Python's = operator boleh mempamerkan gelagat yang tidak dijangka apabila digunakan pada senarai. Gelagat yang tidak dijangka ini berpunca daripada pelaksanaan kaedah khas Python untuk mengubah suai dan menggabungkan objek.
iadd dan tambah Kaedah Khas
Pengendali = cuba menggunakan iadd kaedah khas pada objek yang digunakan jika iadd tidak tersedia, ia menggunakan tambah sebaliknya kaedah khas ini penting untuk memahami tingkah laku =.
__iadd__: Penambahan Dalam Tempat
Kaedahiadd melakukan penambahan di tempat, mengubah suai objek yang bertindak apabila = digunakan pada objek yang menyokong __iadd__, objek diubah suai secara langsung Ini adalah kes untuk jenis boleh ubah seperti senarai.
__add__: Penambahan Biasa
Sebaliknya, <. kaedah>tambahmencipta objek baharu untuk mewakili hasil penambahan Ini biasanya digunakan untuk jenis tidak berubah seperti tupel, rentetan dan integer, yang disalin dan bukannya diubah suai.
Kelakuan dalam SenaraiApabila = digunakan pada objek senarai, Python cuba memanggil __iadd__. Memandangkan senarai boleh berubah, ia menyokong __iadd__. Ini menyebabkan senarai diubah suai di tempatnya, menjejaskan semua kejadian kelas.
Sebaliknya, apabila = digunakan dengan objek senarai,
tambahdipanggil dan senarai baharu dipanggil dicipta. Ini menerangkan sebab dalam contoh yang diberikan, f.bar = [3] mengubah suai f.bar dan g.bar, manakala f.bar = f.bar [4] mencipta objek senarai baharu dan mengubah suai f.bar sahaja.
KesimpulanDengan memahami perbezaan antara
iadddan __add__, ia menjadi jelas mengapa = berkelakuan berbeza pada senarai berbanding dengan jenis lain. Perkara utama ialah = mengubah suai objek secara langsung jika ia menyokong __iadd__, manakala = mencipta objek baharu menggunakan __add__.
Atas ialah kandungan terperinci Mengapa Operator ` =` Python Berkelakuan Berbeza dengan Senarai Daripada Jenis Data Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!