Python3 Mehrfachzuweisung und Speicheradresse [duplizieren]

Diese Frage hat hier bereits eine Antwort:

er Operator @ 'is' verhält sich unerwartet bei nicht zwischengespeicherten Ganzzahlen 2 Antworten

Nach dem LesenDie undDie, die meiner Frage ziemlich ähnlich sind, kann ich das folgende Verhalten immer noch nicht verstehen:

a = 257
b = 257
print(a is b) #False
a, b = 257, 257
print(a is b) #True

Beim Druckenid(a) undid(b) Ich kann sehen, dass die Variablen, denen die Werte in separaten Zeilen zugewiesen wurden, unterschiedliche IDs haben, während bei Mehrfachzuweisung beide Werte dieselbe ID haben:

a = 257
b = 257
print(id(a)) #139828809414512
print(id(b)) #139828809414224
a, b = 257, 257
print(id(a)) #139828809414416
print(id(b)) #139828809414416

Aber es ist unmöglich, dieses Verhalten zu erklären, indem man sagt, dass die mehrfache Zuweisung gleicher Werte immer Zeiger auf dieselbe ID erzeugt, da:

a, b = -1000, -1000  
print(id(a)) #139828809414448
print(id(b)) #139828809414288

Gibt es eine klare Regel, die erklärt, wann die Variablen gleich sindid und wann nicht?

bearbeite

relevant info: Der Code in dieser Frage wurde im interaktiven Modus (ipython3) ausgeführt.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage