理解list.__iadd__ 和list.__add__ 之間的區別
在Python 中,物件可以定義特殊的「魔法」方法來定義支援它們的互動與某些運營商。兩個這樣的方法是 iadd 和 __add__,分別用於就地和常規加法操作。
考慮以下兩個程式碼片段:
<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>
為什麼這樣做這兩個範例的行為不同?
在這兩種情況下,我們都從兩個相同的清單 x 和 y 開始,然後使用 x = [4] 或 x = x [4] 執行加法運算。
當使用 x = [4] 時,會呼叫 Python 的 __iadd__ 方法,該方法執行就地加法。這表示原始清單 x 已發生變化,並且其內容已使用清單 [4] 中的元素進行更新。結果,x 和 y 現在都包含相同的修改後的清單。
相反,當使用 x = x [4] 時,會呼叫 Python 的 __add__ 方法,該方法傳回一個包含 x 和 y 的元素的新列表和[4]。原始清單 x 保持不變,y 仍然指向初始未修改的清單。
以上是`list.__iadd__` 和 `list.__add__` 之間有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!