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 중국어 웹사이트의 기타 관련 기사를 참조하세요!