Wie funktioniert der Austausch von Mitgliedern in Tupeln (a, b) = (b, a) intern?
Der Austausch von Mitgliedern in Tupel werden durch eine Reihe von Stapeloperationen ohne Verwendung einer temporären Variablen ausgeführt. Python trennt den Ausdruck auf der rechten Seite von der Zuweisung auf der linken Seite.
Für Tupel mit 2 oder 3 Elementen:
Die rechte Seite wird ausgewertet, [a, b] auf den Stapel schieben. Der Opcode ROT_TWO vertauscht die beiden oberen Positionen, was zu [b, a] an der Spitze führt. Die STORE_FAST-Opcodes speichern diese Werte dann in den Variablen auf der linken Seite ohne eine temporäre Variable.
Für Tupel mit 4 oder mehr Elementen:
Es wird ein explizites Tupel erstellt aus den Ausdrücken der rechten Seite. Der Opcode UNPACK_SEQUENCE entfernt das Tupel vom Stapel und schiebt seine Elemente in umgekehrter Reihenfolge zurück auf den Stapel. Die nachfolgenden STORE_FAST-Operationen speichern diese Werte in den Variablen auf der linken Seite.
Optimierung für 2- und 3-Namen-Zuweisungen:
Peephole-Optimierung ersetzt die ineffiziente BUILD_TUPLE/UNPACK_SEQUENCE Kombination mit schnelleren ROT_TWO/ROT_THREE-Opcodes für 2 und 3 Namen Aufgaben.
Das obige ist der detaillierte Inhalt vonWie funktioniert der Tupelaustausch intern in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!