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.
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.
Respostas:
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 String
referências são variáveis locais que apontam para String
objetos 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 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