티스토리 뷰
Python
[python] 문자열의 불변성(immutable): (TypeError: 'str' object does not support item assignment)
4OurFuture 2024. 10. 3. 21:41728x90
반응형

안녕하세요! 오늘은 파이썬에서 문자열이 불변(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 에서 문자열의 불변성 이해하기
파이썬에서는 문자열이 불변 데이터 타입입니다. 즉, 문자열을 생성한 후에는 그 내용을 변경할 수 없습니다. 이 불변성은 여러 가지 이유로 중요한 특성입니다.
- 메모리 효율성: 문자열이 불변이기 때문에, 동일한 문자열을 여러 번 사용할 경우 메모리에서 중복을 피할 수 있습니다. 이는 메모리 사용을 최적화하는 데 도움이 됩니다.
- 안전성: 불변성 덕분에 문자열을 안전하게 공유할 수 있습니다. 여러 부분에서 동일한 문자열을 참조하는 경우, 한 부분에서 문자열을 변경할 수 없으므로 예상치 못한 오류를 방지할 수 있습니다.
코드 분석
위의 코드에서 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
반응형
'Python' 카테고리의 다른 글
| 파이썬 매직 메서드(Magic Methods) (3) | 2025.07.26 |
|---|---|
| 📝 Python 주요 내장 객체별 메서드 Cheat Sheet (1) | 2025.03.20 |
| 문자열 슬라이싱 의 이해 (어떤 값도 입력 안 했을 때, 기초값은 0일까요? 아니면 None일까요?) (1) | 2024.10.03 |
| [Python] Random 모듈에 대한 다양한 활용법 (0) | 2024.08.22 |
| [Python] List Comprehension & Dictionary Comprehension (0) | 2024.08.22 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 재테크
- 로또 ai
- 클래스형 뷰
- Numpy
- chat gpt api 비용 계산
- 주식투자
- 주린이탈출
- 1164회 로또
- 주식공부
- 케라스
- chat gpt 가격 예상
- 기술적분석
- 오블완
- chat gpt 모델 api 가격 예측
- chat gpt 모델별 예산
- 자동매매로직
- chat gpt 모델 별 가격
- 로또 1164회 당첨
- 골든크로스
- 차트분석
- 인공지능 로또 예측
- 퀀트투자
- 티스토리챌린지
- chat gpt 한국어 가격
- 장고 orm sql문 비교
- Python
- 토치비전
- chat gpt 4o 예산
- 1165회 로또
- 자동매매
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
글 보관함
250x250