2011-12-21 39 views

Respuesta

31

El código fuente de Python se convierte a bytecode antes de que se ejecute. Se puede ver cómo el canje funciona internamente utilizando el desensamblador dis para ver lo que el código de bytes se parece a:

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 pila, gira (swaps) de la parte superior dos elementos, luego aparece los valores nuevamente.

Consulte también:

+0

impresionante! Entonces el truco es ROT_TWO ... ¡Muchas gracias! –

Cuestiones relacionadas