2011-12-21 16 views

risposta

31

Il codice sorgente Python viene convertito in bytecode prima che venga eseguito. Si può vedere come lo swap funziona internamente utilizzando il disassembler dis per vedere che cosa il bytecode assomiglia:

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 

In termini semplici, spinge i valori di A e B sulla pila, ruota (swap) la parte superiore due elementi, quindi apre di nuovo i valori.

Consulta anche:

+0

Impressionante! Quindi il trucco è ROT_TWO ... Grazie mille! –

Problemi correlati