Python3 Mehrfachzuweisung und Speicheradresse [duplizieren]
Diese Frage hat hier bereits eine Antwort:
er Operator @ 'is' verhält sich unerwartet bei nicht zwischengespeicherten Ganzzahlen 2 AntwortenNach 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.