Por que as seqüências de caracteres Python são alocadas na pilha?

9

De acordo com este visualizador de código Python , as seqüências de caracteres Python são alocadas na pilha e não na pilha.

Por que é isso? Eu pensei que eles seriam semelhantes ao Java, onde Strings são alocados na pilha.

rdasxy
fonte

Respostas:

7

Esse visualizador não está mostrando os dados da string na pilha. Ele está mostrando as referências locais aos dados do heap como parte da pilha de chamadas. Isso é muito semelhante ao Java, onde as Stringreferências são variáveis ​​locais que apontam para Stringobjetos reais no heap.

O visualizador é livre para fazer qualquer tipo de simplificação de representação desejada. Isso não implica que "seqüências de caracteres Python estejam alocadas na pilha" em qualquer implementação do Python.

Greg Hewgill
fonte
1

Greg disse em sua resposta que as strings são alocadas na pilha.

O visualizador optou por exibir alguns objetos na parte "frame", o que me parece errado. Felizmente, isso tem pouco impacto para quem está aprendendo python, pois os objetos afetados (int, string) são imutáveis. Portanto, o raciocínio sobre os efeitos ainda é possível.

No entanto, dá a falsa impressão de que as seqüências de caracteres são duplicadas na memória quando você faz coisas como:

x = "hello"
y = x
Simon Bergot
fonte