Rumah > Artikel > pembangunan bahagian belakang > Apakah perbezaan antara `list.__iadd__` dan `list.__add__` dan mengapa ia membawa kepada hasil yang berbeza apabila mengubah suai senarai dalam Python?
Memahami Perbezaan Antara senarai.__iadd__ dan list.__add__
Dalam Python, objek boleh mentakrifkan kaedah "ajaib" khas untuk menyokong interaksi mereka dengan pengendali tertentu. Dua kaedah sedemikian ialah iadd dan __add__, masing-masing digunakan untuk operasi tambah di tempat dan biasa.
Pertimbangkan dua coretan kod berikut:
<code class="python"># Example 1 x = y = [1, 2, 3, 4] x += [4] print(x) # [1, 2, 3, 4, 4] print(y) # [1, 2, 3, 4, 4] # Example 2 x = y = [1, 2, 3, 4] x = x + [4] print(x) # [1, 2, 3, 4, 4] print(y) # [1, 2, 3, 4]</code>
Mengapa perlu kedua-dua contoh ini berkelakuan berbeza?
Dalam kedua-dua kes, kita mulakan dengan dua senarai yang sama, x dan y, dan kita melakukan operasi tambah menggunakan sama ada x = [4] atau x = x [4].
Apabila menggunakan x = [4], kaedah __iadd__ Python dipanggil, yang melakukan penambahan di tempat. Ini bermakna senarai asal x bermutasi dan kandungannya dikemas kini dengan elemen dalam senarai [4]. Akibatnya, kedua-dua x dan y kini mengandungi senarai diubah suai yang sama.
Sebaliknya, apabila menggunakan x = x [4], kaedah __add__ Python dipanggil, yang mengembalikan senarai baharu yang mengandungi elemen daripada kedua-dua x dan [4]. Senarai asal x kekal tidak berubah dan y masih menunjuk ke senarai awal yang tidak diubah suai.
Atas ialah kandungan terperinci Apakah perbezaan antara `list.__iadd__` dan `list.__add__` dan mengapa ia membawa kepada hasil yang berbeza apabila mengubah suai senarai dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!