list.__iadd__ と list.__add__ の違いを理解する
Python では、オブジェクトは相互作用をサポートする特別な「マジック」メソッドを定義できます。特定のオペレーターを使用して。このような 2 つのメソッドは、iadd と __add__ で、それぞれインプレース加算演算と通常の加算演算に使用されます。
次の 2 つのコード スニペットを考えてみましょう。
<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>
なぜそうするのかこれら 2 つの例は動作が異なりますか?
どちらの場合も、2 つの同一のリスト x と y から開始し、x = [4] または x = x [4] のいずれかを使用して加算演算を実行します。
x = [4] を使用すると、Python の __iadd__ メソッドが呼び出され、インプレース加算が実行されます。これは、元のリスト x が変更され、その内容がリスト内の要素で更新されることを意味します [4]。その結果、x と y の両方に同じ変更されたリストが含まれるようになりました。
対照的に、x = x [4] を使用すると、Python の __add__ メソッドが呼び出され、両方の x の要素を含む新しいリストが返されます。および[4]。元のリスト x は変更されず、y は依然として初期の未変更のリストを指します。
以上が`list.__iadd__` と `list.__add__` の違いは何ですか?また、Python でリストを変更すると異なる結果が生じるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。