>백엔드 개발 >파이썬 튜토리얼 >Python 문자열 연결이 문자열을 수정하는 것처럼 보이는 이유는 무엇입니까?

Python 문자열 연결이 문자열을 수정하는 것처럼 보이는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-31 02:28:021091검색

Why Does Python String Concatenation Appear to Modify Strings?

Python 문자열 가변성의 환상: A " " B

Python 문자열은 불변성으로 널리 알려져 있습니다. 그러나 " " b를 포함하여 제공한 코드 예제는 이 기본 속성에 대한 질문을 제기합니다. 모순처럼 보이는 이 동작 뒤에 있는 설명을 자세히 살펴보겠습니다.

변수의 이야기

a = "Dog"와 같이 변수에 문자열을 할당하면 단순히 메모리에 해당 문자열에 대한 참조를 생성합니다. 변수는 문자열 자체의 복사본을 소유하거나 보유하지 않습니다. 오히려 그것은 그것을 가리킨다. 이것이 Python의 문자열 불변성의 핵심입니다.

The New Object Magic

당신이 언급한 코드에서 " " b를 쓰면 문자열 불변성이 아닙니다. a 또는 b가 가리키는 문자열을 수정합니다. 대신 두 문자열을 연결한 새 문자열을 생성합니다. 그런 다음 새로 생성된 문자열은 새 참조에 할당되고 원래 문자열은 그대로 유지됩니다.

변수 재할당

여기서 중요한 점은 다음 코드 줄입니다.

a = a + " " + b + " " + c

이 줄은 a가 이전에 가리킨 문자열을 수정하는 것이 아니라 방금 만든 새 문자열을 가리키도록 a를 다시 할당하는 것입니다. 따라서 이제 A는 연결된 문자열 "Dog eats treats"를 가리키고 원래 "Dog" 문자열은 변경되지 않습니다.

결론

문자열 "Dog"가 변경되고 있지만 실제로 Python은 프로세스 전반에 걸쳐 새로운 문자열을 생성하고 할당합니다. 문자열의 불변성은 그대로 유지되므로 일단 문자열이 생성되면 내용을 변경할 수 없습니다.

위 내용은 Python 문자열 연결이 문자열을 수정하는 것처럼 보이는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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