Python

[python] 문자열의 불변성(immutable): (TypeError: 'str' object does not support item assignment)

4OurFuture 2024. 10. 3. 21:41
728x90
반응형

안녕하세요! 오늘은 파이썬에서 문자열이 불변(immutable)이라는 개념에 대해 알아보겠습니다. 특히, 다음과 같은 코드에서 발생하는 오류의 원인에 대해 설명하겠습니다.

 

오류 발생 코드 재현하기 

lang = 'python'
lang[0] = 'P'  # 에러 발생

Traceback (most recent call last):  File "d:\python\test.py", line 2, in <module>
    lang[0] = 'P'
    ~~~~^^^
TypeError: 'str' object does not support item assignment

Python 에서 문자열의 불변성 이해하기

파이썬에서는 문자열이 불변 데이터 타입입니다. 즉, 문자열을 생성한 후에는 그 내용을 변경할 수 없습니다. 이 불변성은 여러 가지 이유로 중요한 특성입니다.

  1. 메모리 효율성: 문자열이 불변이기 때문에, 동일한 문자열을 여러 번 사용할 경우 메모리에서 중복을 피할 수 있습니다. 이는 메모리 사용을 최적화하는 데 도움이 됩니다.
  2. 안전성: 불변성 덕분에 문자열을 안전하게 공유할 수 있습니다. 여러 부분에서 동일한 문자열을 참조하는 경우, 한 부분에서 문자열을 변경할 수 없으므로 예상치 못한 오류를 방지할 수 있습니다.

코드 분석

위의 코드에서 lang[0] = 'P'는 다음과 같은 이유로 오류가 발생합니다:

  • 인덱스 접근: lang[0]는 문자열의 첫 번째 문자인 'p'를 가리킵니다. 문자열은 인덱스를 통해 각 문자에 접근할 수 있지만, 이 문자 자체를 수정하려고 시도하는 것은 불가능합니다.
  • TypeError 발생: 파이썬은 문자열의 내용을 수정하려는 시도가 있을 때 TypeError를 발생시킵니다. 이 오류 메시지는 "string object does not support item assignment" (문자열 객체는 항목 할당을 지원하지 않음)이라는 내용을 포함합니다. 이는 문자열이 불변이기 때문에 발생하는 오류입니다.

 

 

문자열 수정 방법

 

그러면, 어떻게 하면 문자열을 수정할 수 있을까요???

잠깐만 생각해 봅시다.

 

문자열을 수정하려면 다른 방법으로 문자열을 변환해야 합니다.예를 들어, 문자열의 첫 번째 문자를 대문자로 변경하고 싶다면 다음과 같이 문자 슬라이싱 또는 replace 등을 활용 할 수 있습니다:

(1) 문자열 슬라이싱 활용 방법 

lang = 'python'
new_lang = 'P' + lang[1:]  # 대문자 'P'와 나머지 문자열을 합칩니다.
print(new_lang)  # 출력: 'Python'

문자열 슬라이싱을 활용한 파이썬 글자 교체하기

 

이렇게 하면 원본 문자열은 그대로 유지되고, 새로운 문자열이 생성됩니다.

 

(2) replace 활용 방법 

lang = 'python'
new_lang = lang.replace('p','P') #p를 P로 교체합니다.
print(new_lang)  # 출력: 'Python'

 

이렇게 하면 small p가 P로 변경됩니다. 

결론

파이썬에서 문자열은 불변 데이터 타입으로, 이를 이해하는 것은 파이썬 프로그래밍에서 매우 중요합니다. 문자열을 수정하려고 할 때 발생하는 오류는 문자열의 불변성 때문에 나타나는 것입니다. 문자열을 안전하고 효율적으로 사용하려면 이러한 특성을 염두에 두고 변경하는 방식을 활용하여 프로그래밍해야 합니다.

여러분의 파이썬 학습에 도움이 되길 바랍니다! 감사합니다.

728x90
반응형