¿Cómo funciona el intercambio de variables internamente?

Pregunta simple y corta. Intercambiar dos variables en Python es muy fácil: a, b = b, a . Está bien, no tengo objeciones 🙂 ¿Pero me interesa cómo funciona internamente? ¿Crea alguna variable temporal por sí misma o es algo más interesante (lo apuesto)?

El código fuente de Python se convierte a bytecode antes de ejecutarse. Puede ver cómo funciona el intercambio internamente usando el desensamblador dis para ver cómo se ve el código de bytes:

 import dis >>> def f(a,b): a, b = b, a >>> dis.dis(f) 1 0 LOAD_FAST 1 (b) 3 LOAD_FAST 0 (a) 6 ROT_TWO 7 STORE_FAST 0 (a) 10 STORE_FAST 1 (b) 13 LOAD_CONST 0 (None) 16 RETURN_VALUE 

En términos simples, empuja los valores de a y b en la stack, rota (intercambia) los dos elementos superiores y vuelve a mostrar los valores.

Ver también:

  • Instrucciones de Bytecode de Python