Python faz fatiamento por cópia em strings: O Python faz fatiamento por referência em strings?
Isso é algo que todas as implementações do Python precisam respeitar ou é apenas um detalhe da implementação do CPython?
Python faz fatiamento por cópia em strings: O Python faz fatiamento por referência em strings?
Isso é algo que todas as implementações do Python precisam respeitar ou é apenas um detalhe da implementação do CPython?
Isso não está documentado na referência de linguagem e é um detalhe da implementação do CPython. Alguns anos atrás, um patch foi proposto para tentar evitar cópias, mas foi rejeitado por Guido devido a preocupações com desempenho ( ref ).
A cópia poderia, em teoria, ser evitada na implementação sem violar nenhum requisito, mas seria difícil de implementar com as técnicas atuais de contagem de referências e coleta de lixo usadas pelo CPython.
A cópia da memória subjacente em
str
fatias é feita porque a contagem de referência se torna complicada sem a cópia, e a contagem de referência em si é um detalhe de implementação do CPython. Portanto, copiar fatias de string também é um detalhe de implementação.Note que já, algumas fatias particulares não copiam . Este também é um detalhe/otimização de implementação.