>>> a = 2
>>> b = a
>>> b
2
>>> a = 20
>>> b
2
bの最後のインスタンスも20に戻ります.bはaに割り当てられているため変更されましたか? b
は、その後2であるa
に格納される量、に初期化されている例で変数Aは変数Bに割り当てられます.Aが変更された場合、Aも変更すべきではありませんか?
>>> a = 2
>>> b = a
>>> b
2
>>> a = 20
>>> b
2
bの最後のインスタンスも20に戻ります.bはaに割り当てられているため変更されましたか? b
は、その後2であるa
に格納される量、に初期化されている例で変数Aは変数Bに割り当てられます.Aが変更された場合、Aも変更すべきではありませんか?
Pythonではすべてがオブジェクトであり、何かを割り当てるときは、実際にオブジェクトへの参照を割り当てます。
変数は、どこかに存在するオブジェクトのラベルに過ぎないと考えています。その理由のため、Pythonは実際には変数「名前」を呼び出します。
a = 2
を実行すると、値2を持つint
オブジェクトの名前はa
になります。 b = a
を実行すると、a
が別の名前を参照するオブジェクトがb
になります。したがって、両方の変数は同じオブジェクトを参照します。ここまでは順調ですね。
今すぐa = 20
を実行すると、a
が参照している名前が変更されます。値を保持する別のint
オブジェクトを参照するために名前を使用しています。これは、値2を保持している他のオブジェクトには影響しません。それでも名前はb
です。だから何かを割り当てることは、オブジェクトのラベルを変更するだけです。そのようにオブジェクトを変更することは決してありません。
オブジェクトを変更した場合とは異なります。最も一般的な例はリストである:ちょうど前のような
a = ['hello']
b = a
、a
とb
は同じlist
オブジェクトの名前です。 b.append('world')
を呼び出してb
を突き止めた場合、b
が参照するオブジェクトを突然変異させています。しかしa
はまだ同じlist
オブジェクトを参照し、そのa
を見たときに、あなたもこれらの変更が表示されます。 `int`よう
>>> a = ['hello']
>>> b = a
>>> b.append('world')
>>> a
['hello', 'world']
は、a
はint
オブジェクトが不変であるようにBを変更しないことが20の値を再割り当てされます。ここ
がBが割り当てられている例である:すなわち、b
はa
であったが、a
が変更されると、それは効果がb
a = 2
b = a #here, storing the contents of a in b
#b now stores 2
a = 20 #here, only changes the value that is stored in a.
#b is still 2
編集に格納されていないこと値を有します
a = 2
b = 3
a = b #now, a stores the value that b contains
#a is now 3
#b is still 3
内容の代わりに、bがaに代入されている例を挙げることもできますか? –
@MitchellvanZuylen最近の私の編集をご覧ください。それが意味をなさないかどうか私に教えてください。 – Ajax1234
これは変更可能なオブジェクトのための真のですが、ない不変のものを。 –
@Coldspeed、この場合、変数 "points"は異なる値であり、必ずしも不変オブジェクトに限定されるものではありません: 'a = object(); b = a; a = object(); (a!= b)== True' – Elisha
必要な読書:https://nedbatchelder.com/text/names1.html – chepner