私の質問にかなり似ているthisとthisを読んだ後、私はまだ次の動作を理解できません:
a = 257
b = 257
print(a is b) #False
a, b = 257, 257
print(a is b) #True
印刷するid(a)
とid(b)
、値が別々の行に割り当てられた変数のIDが異なることがわかりますが、複数の割り当てでは両方の値が同じIDを持っています:
a = 257
b = 257
print(id(a)) #139828809414512
print(id(b)) #139828809414224
a, b = 257, 257
print(id(a)) #139828809414416
print(id(b)) #139828809414416
しかし、同じ値を複数代入すると常に同じ ID へのポインターが作成されると言って、この動作を説明することは不可能です。
a, b = -1000, -1000
print(id(a)) #139828809414448
print(id(b)) #139828809414288
変数が同じになるときとそうでないときを説明する明確なルールはありますid
か?
編集
関連情報:この質問のコードはインタラクティブモード(ipython3)で実行されました