¿Por qué se asignan las cadenas de Python en la pila?

Respuestas:

7

Ese visualizador no muestra los datos de la cadena en la pila. Muestra las referencias locales a los datos del montón como parte de la pila de llamadas. Esto es muy similar a Java, donde las Stringreferencias son variables locales que apuntan a Stringobjetos reales en el montón.

El visualizador es libre de hacer cualquier tipo de simplificación de representación que le interese. No implica que "las cadenas de Python se asignen en la pila" en cualquier implementación dada de Python.

Greg Hewgill
fuente
1

Ha dicho Greg en su respuesta, las cadenas se asignan en el montón.

El visualizador ha elegido mostrar algunos objetos en la parte del "marco", lo que me parece incorrecto. Afortunadamente, tiene poco impacto para alguien que está aprendiendo python, ya que los objetos afectados (int, string) son inmutables. Por lo tanto, todavía es posible razonar sobre los efectos.

Sin embargo, da la falsa impresión de que las cadenas se duplican en la memoria cuando haces cosas como:

x = "hello"
y = x
Simon Bergot
fuente