Pregunta simple y breve. El intercambio de 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í mismo o es algo más interesante (lo apuesto)?¿Cómo funciona el intercambio de variables internamente?
17
A
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:
Cuestiones relacionadas
- 1. ¿Cómo funciona el intercambio de variables XOR?
- 2. cómo funciona printf internamente.
- 3. ¿Cómo funciona stringstream internamente?
- 4. Hash: ¿Cómo funciona internamente?
- 5. ¿cómo funciona fgets internamente?
- 6. ¿Cómo funciona Firebug internamente?
- 7. ¿Cómo funciona LINQ internamente?
- 8. ¿Cómo funciona el enrutamiento ASP.NET internamente?
- 9. ¿Cómo funciona el operador "es" internamente
- 10. ¿Cómo funciona C# eventhandler internamente?
- 11. ¿Cómo funciona PHP PDO internamente?
- 12. ¿Cómo funciona BULK INSERT internamente?
- 13. ¿Cómo funciona el manejo de eventos internamente dentro de JavaScript?
- 14. ¿Cómo funciona phoneGap (Cordova) internamente, iOS específica
- 15. ¿Cómo funciona LinkedList internamente en Java?
- 16. ¿Cómo funciona la palabra clave "como" internamente?
- 17. ¿Cómo funciona un cursor SQLite internamente?
- 18. Intercambio de variables dentro del método estático
- 19. ¿Cómo funciona la lista de escritura de E/S internamente?
- 20. ¿Cómo puedo averiguar mejor cómo funciona django internamente?
- 21. ¿Cómo funciona copy_from_user del kernel de Linux internamente?
- 22. ¿Cómo funciona la función de animación jquery internamente?
- 23. cómo C++ implementa el polimorfismo internamente?
- 24. ¿Cómo funciona el servicio de usuario de Google App Engine internamente?
- 25. ¿Cómo se define (?) Internamente?
- 26. ¿Cómo se implementa malloc() internamente?
- 27. ¿Cómo funcionan los Intents internamente?
- 28. ¿Cómo funciona internamente el componente MoreLikeThis de Solr para obtener resultados?
- 29. ¿Cómo se mantiene internamente el diccionario?
- 30. LISP intercambio variable
impresionante! Entonces el truco es ROT_TWO ... ¡Muchas gracias! –