Python bewertet Ausdrücke von links nach rechts. Beachten Sie, dass beim Evaluieren einer Zuweisung der rechte Wert vor dem linken Wert evaluiert wird.
Python-Dokumentation: Auswertungsreihenfolge
Das bedeutet Folgendes für den Ausdruck a,b = b,a
:
- Der rechte Wert
b,a
wird evaluiert, das heißt, ein Tupel aus zwei Elementen wird im Speicher erstellt. Die beiden Elemente sind die Objekte, die durch die Bezeichner b
und a
bezeichnet werden, die bereits vorhanden waren, bevor die Anweisung während der Programmausführung erreicht wurde.
- Direkt nach der Erstellung dieses Tupels wurde noch keine Zuweisung dieses Tupelobjekts vorgenommen, aber das spielt keine Rolle, Python weiß intern, wo es sich befindet.
- Dann wird der linke Wert evaluiert, das heißt, das Tupel wird dem linken Wert zugewiesen.
- Da der linke Wert aus zwei Bezeichnern besteht, wird das Tupel so entpackt, dass der erste Bezeichner
a
dem ersten Element des Tupels zugewiesen wird (das Objekt, das vor dem Vertauschen als erstes b war, da es den Namen b
hatte)
und der zweite Bezeichner b
dem zweiten Element des Tupels zugewiesen wird (das Objekt, das vor dem Vertauschen als erstes a war, da seine Bezeichner a
waren)
Mit diesem Mechanismus wurden effektiv die Objekte vertauscht, die den Bezeichnern a
und b
zugewiesen sind.
Also, um Ihre Frage zu beantworten: JA, es ist der Standardweg, um zwei Bezeichner für zwei Objekte zu vertauschen.
Übrigens sind die Objekte keine Variablen, sondern Objekte.