Python을 사용하지 않는 Strings Imutabilidade
4351 단어 python
Strings no Python são objetos imutáveis!
E foi correndo para o seu terminal escrever o seguinte código:
palavra = "abc"
palavra = "def"
print(palavra)
# Imprime "def"
Talvez tenha se perguntado por que esse programa funcionou... Afinal, se strings são objetos imutáveis no Python, eu não estou alterando a variável palavra de "abc"para "def"? Ou seja, "mutando"esse valor?
Mais ou menos... Na verdade, estamos alterando a variável – que antes reference a string "abc"e passou a referencer a string "def"– mas o valor "abc"não foi alterado!
Mudando a referência da variável "palavra"
Para alterar o valor, ou seja, alterar a string imutável "abc"deveríamos fazer o seguinte:
palavra = "abc"
print(palavra[0])
# Imprime o primeiro caractere, no caso "a "
palavra[0] = "x" # Tenta alterar o primeiro caractere de "abc" para "x"
Ao executar esse exemplo, você vai obter o seguinte erro:
TypeError: 'str' 개체가 항목 할당을 지원하지 않습니다.
Já que strings no Python são imutáveis, não podemos atribuir um novo valor a uma string depois de criada – como tentamos fazer com palavra[0] = "x". 참고 que escrever palavra = alguma_coisa e depois palavra = outra_coisa é alterar qual objeto nossa variável reference, mas não o valor do objeto em si("abc").
무타벨 vs 이무타벨
Talvez seja mais fácil entender se compararmos com o exemplo de algum objeto mutável. Para isso, vamos utilizar a Lista(목록):
lista = ["a", "b", "c"]
# Cria uma lista com 3 elementos onde cada elemento da lista é um caractere
palavra = "abc" # Cria uma string com 3 caracteres
lista[0] = "x"
print(lista) # Imprime ['x', 'b', 'c']
palavra[0] = "x" # TypeError!
Python에 대한 개체 변경 사항을 목록에 추가하고, 용맹한 용기의 대체품을 변경합니다. 아니 카소, alteramos o valor do primeiro elemento da lista de "a"para "x".
Imutabilidade e economia de memória
Uma consequência interessante de objetos imutáveis é a economia de memória. Já que a string é imutável, significa que não importa quantas variáveis reference esta string, não precisamos nos preocupar em alocar memória múltiplas vezes (uma vez para cada variável), pois não existe or risco de o valor ser alterado.
x = "abc" # Reserva um espaço de memória para armazenar o valor "abc"
y = "abc" # Referencia o mesmo espaço de memória reservdo para "abc"
print(id(x) == id(y)) # Vai imprimir True!
Podemos verificar o endereço de memória de um objeto utilizando o método id(obj). 아니 예 예 Acima, declaramos duas variáveis diferentes com o valor "abc"em cada uma delas. "abc"ser um valor imutável, Python otimizou a utilização de memória e fez com que ambas variáveis (x e y) apontassem (ou reference) para o mesmo endereço de memória onde "abc"está armazenado.
Mais uma vez, vamos utilizar um exemplo utilizando listas (objeto mutável) para entender melhor:
x = ["a", "b", "c"]
y = ["a", "b", "c"]
print(id(x) == id(y)) # Vai imprimir False!
예를 들어 Acima vai imprimir False pois, apesar das listas x e y armazenarem os mesmos valores (3 elementos, onde cada elemento é um caractere), o interpretador Python vai reservar o espaço de memória necessário para as duas listas, pois listas são objetos mutáveis!
Reference
이 문제에 관하여(Python을 사용하지 않는 Strings Imutabilidade), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/franzkarol/imutabilidade-de-strings-no-python-3o00텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)