Python 初心者が a+=a と a=a+a の違いについて質問しました
三叔
三叔 2017-06-13 09:24:36
0
4
1167

最初のコード:

リーリー

結果:

2 番目のコード:

リーリー

結果:

私の質問:
num = num は、mun = num num と直接的に等価ではないでしょうか?
計算結果が異なるのはなぜですか?何が起こっているのか###

三叔
三叔

全員に返信(4)
大家讲道理

次のようなことを試してみてください。 リーリー

変数に割り当てられたメモリアドレスは、id()関数を通じて取得できます。実験の結果、

を使用する変数のアドレスが変更されていることがわかりました。これは、num+=numとnum=num+num+が等価ではないということです。 ただし、以下のセクシーな操作を行うと、顔を平手打ちされることになります
リーリー

割り当てられたアドレスは常に変更されているようです。

その理由は、Python のデータ構造が可変と不変に分かれているためです。
変数型の場合、上記のリストに示すように、= と += は明らかに異なります:
+ は接続操作を表し、+= は追加を表します
不変型の場合、= と += は同じ操作です (上記のタプルなど)
変数型と不変型の本質はメモリ空間が可変かどうかにあります~

いいねを押す +0
洪涛

最初に気づくのは違いです

リーリー

呼び出されるメソッドが異なり、__add__、__iadd__ であることがわかります
加算演算子は、num に割り当てる新しいオブジェクトを計算します
増分代入演算子は、元の参照を変更します

ここを参照: https://stackoverflow.com/que...

いいねを押す +0
滿天的星座

Python では引数は代入によって渡されることに注意してください。

Python では、代入は参照ではなくパラメーターを渡すために使用されるため、関数に a を渡すときは、a 自体ではなく、a の値を渡します。それ自体を変更したい場合は、return を使用して値を返す必要があります

リーリー

結果:

リーリー

いいねを押す +0
世界只因有你

Pythonでは、a=a+bは、まず新しいオブジェクトを作成し、変数aにこのオブジェクトを参照させることです。 a+=bは、aが参照するオブジェクトの

をa+bの値に変更します。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート