>백엔드 개발 >파이썬 튜토리얼 >\'a \' \' b\'를 사용할 때 Python 문자열이 변경 가능한 것으로 나타나는 이유는 무엇입니까?

\'a \' \' b\'를 사용할 때 Python 문자열이 변경 가능한 것으로 나타나는 이유는 무엇입니까?

DDD
DDD원래의
2024-10-31 22:20:29503검색

Why Do Python Strings Appear Mutable When Using

Python 문자열의 가변 특성 공개: " " b에 대한 탐구

Python 문자열은 본질적으로 문자열이라는 오랜 믿음에도 불구하고 불변의 독특한 관찰이 이 개념에 도전합니다. a " " b 구문을 사용하여 문자열을 연결하면 문자열이 변경되는 것처럼 보입니다. 이 수수께끼 같은 동작을 조사해 보겠습니다.

코드 조사

다음 코드 조각을 고려하세요.

<code class="python">a = "Dog"
b = "eats"
c = "treats"

print a, b, c
# Dog eats treats

print a + " " + b + " " + c
# Dog eats treats

print a
# Dog

a = a + " " + b + " " + c
print a
# Dog eats treats
# !!!</code>

이상 현상 이해

우리가 이해한 바에 따르면 Python 문자열은 불변이므로 내용을 직접 조작하는 것이 금지됩니다. 그러나 위의 코드는 그렇지 않은 경우를 보여줍니다. a = a " " b " " c 줄을 실행하면 a가 가리키는 문자열이 수정된 것으로 나타나 혼란을 야기합니다.

미스터리 풀기

이 동작을 이해하는 열쇠는 다음과 같습니다. Python 문자열 자체는 변경 불가능한 상태로 유지됩니다. 대신, 변수 a는 연결된 내용을 포함하는 새 문자열 객체에 재할당됩니다.

코드의 첫 번째 부분에서 a는 처음에 문자열 "Dog"를 가리킵니다. " " b를 사용하여 문자열을 연결하면 연결 결과(이 경우 "Dog eats treats")를 포함하는 새 문자열이 메모리에 생성됩니다. 그러나 a는 여전히 원래 "Dog" 문자열을 가리킵니다.

a " " b " " c 값을 a에 할당하면 연결된 결과 "Dog eats treats"를 포함하는 새 문자열 개체가 생성됩니다. ", 그리고 이제 a는 이 새로운 문자열을 가리킵니다. 원래 "Dog" 문자열은 변경되지 않고 여전히 메모리에서 액세스할 수 있습니다.

따라서 이 컨텍스트에서 문자열의 명백한 변형은 문자열 수정이 아니라 문자열을 가리키는 변수의 재할당의 결과입니다. 그 자체. Python 문자열은 불변성을 유지하면서 문자열을 가리키는 참조를 변경할 수 있는 유연성을 제공합니다.

위 내용은 \'a \' \' b\'를 사용할 때 Python 문자열이 변경 가능한 것으로 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.