Percanggahan Gelagat antara senarai.__iadd__ dan senarai.__add__
Pertimbangkan coretan berikut:
<code class="python">x = y = [1, 2, 3, 4] x += [4] print(x) # Outputs: [1, 2, 3, 4, 4] print(y) # Outputs: [1, 2, 3, 4, 4]</code>
Sebaliknya , perhatikan ini:
<code class="python">x = y = [1, 2, 3, 4] x = x + [4] print(x) # Outputs: [1, 2, 3, 4, 4] print(y) # Outputs: [1, 2, 3, 4]</code>
Mengapakah kedua-dua coretan kod ini berkelakuan berbeza?
Penjelasan
Perbezaan utama terletak pada penggunaan " " pengendali. Dalam coretan pertama:
x = [4] menggunakan kaedah __iadd__ kelas senarai, yang:
Ini menyebabkan kedua-dua x dan y diubah suai untuk memasukkan nilai 4.
Walau bagaimanapun, dalam coretan kedua, x = x [4] menggunakan kaedah __add__:
Oleh itu, x mempunyai nilai [1, 2 , 3, 4, 4] manakala y masih memegang nilai asal [1, 2, 3, 4].
Atas ialah kandungan terperinci Mengapakah `list.__iadd__` mengubah suai senarai asal dan senarai yang ditetapkan, manakala `list.__add__` hanya mengubah suai senarai yang ditetapkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!