Domanda semplice e breve. Scambiare due variabili in Python è molto semplice: a, b = b, a
. Va bene, non ho obiezioni :) Ma mi interessa come funziona internamente? Crea qualche variabile temporanea da sola o è qualcosa di più interessante (scommetto così)?Come funziona lo scambio delle variabili internamente?
17
A
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:
Problemi correlati
- 1. Come funziona lo stringstream internamente?
- 2. Come funziona printf internamente?
- 3. Come funziona conda internamente?
- 4. Come funziona Firebug internamente?
- 5. Come funziona BULK INSERT internamente?
- 6. Come provare ... finalmente funziona internamente
- 7. Come funziona PHP PDO internamente?
- 8. Come funziona l'eventmanler C# internamente?
- 9. Come funziona l'operatore "è" internamente
- 10. Quanto hot deployment funziona internamente?
- 11. Come funziona il routing ASP.NET internamente?
- 12. Come funziona il bundle di asp.net internamente
- 13. Come la serializzazione java funziona internamente?
- 14. jQuery each() - Come funziona veramente internamente?
- 15. Catturare/reindirizzare internamente lo stdout?
- 16. Quando utilizzare lo scambio diretto sullo scambio di fanout
- 17. In che modo LINQ funziona internamente?
- 18. Come funziona il caricamento di file HTTP internamente in IIS?
- 19. Problemi con lo scambio fanout RabbitMQ
- 20. per lo scambio di equazioni nel codice
- 21. Quali sono i vantaggi dell'utilizzo delle proprietà internamente?
- 22. Come funziona l'operatore di arrow internamente in java 8?
- 23. Come funziona la funzione di animazione jquery internamente?
- 24. Come funziona phoneGap (Cordova) internamente, specifico per iOS
- 25. C# È necessario il blocco durante lo scambio di riferimenti variabili nell'applicazione multithreading
- 26. Come funziona lo interning delle stringhe in Java 7+?
- 27. Come funziona lo smontaggio delle istruzioni del braccio 'BL'?
- 28. Come gestire lo scambio di dati del dominio cross app
- 29. In che modo la parola chiave "as" funziona internamente?
- 30. Come viene definito (,) internamente?
Impressionante! Quindi il trucco è ROT_TWO ... Grazie mille! –