>>> a=(10,20,30)
>>> a[0]=100
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
a[0]=100
TypeError: 'tuple' object does not support item assignment
>>> a.append(40)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
a.append(40)
AttributeError: 'tuple' object has no attribute 'append'
파이썬 입니다. 소스의 오류가 난 이유를 자세히 설명
설명시작)
a=(10,20,30)와 a[0]=100 및 a.append(40) 코드가 오류가 나는 이유는 파이썬의 튜플(Tuple)이 불변(immutable) 자료형이기 때문입니다. 불변 자료형은 한 번 생성되면 그 값을 변경하거나 요소를 추가, 삭제할 수 없습니다.
TypeError: 'tuple' object does not support item assignment
첫 번째 오류인 TypeError: 'tuple' object does not support item assignment는 다음과 같은 이유로 발생합니다:
- 튜플은 불변입니다: a=(10,20,30) 코드는 a라는 튜플을 만들고 그 안에 10, 20, 30을 담습니다. 튜플은 생성된 후에는 개별 요소를 수정할 수 없습니다.
- 할당 연산자: a[0]=100 코드는 튜플 a의 첫 번째 요소(인덱스 0)를 100으로 바꾸려고 시도합니다. 이는 불변인 튜플의 값을 바꾸는 행위이므로 파이썬 인터프리터가 이를 허용하지 않아 오류가 발생합니다.
리스트(List)와 같은 가변(mutable) 자료형에서는 my_list[0]=100과 같은 할당이 가능합니다.
AttributeError: 'tuple' object has no attribute 'append'
두 번째 오류인 AttributeError: 'tuple' object has no attribute 'append'는 다음과 같은 이유로 발생합니다:
- 튜플은 요소를 추가할 수 없습니다: append() 메서드는 리스트(list)에 새로운 요소를 추가하기 위해 사용되는 기능입니다.
- 메서드(Method)의 부재: 튜플은 불변 자료형이므로, 요소를 추가하는 기능 자체가 없습니다. 따라서 a.append(40)과 같이 튜플에 없는 append라는 메서드를 호출하려고 하면 AttributeError가 발생합니다.
요약
| 자료형 | 가변성 | a[0]=100 | a.append(40) |
| 튜플(Tuple) | 불변(immutable) | ❌ 불가능 | ❌ 불가능 |
| 리스트(List) | 가변(mutable) | ✅ 가능 | ✅ 가능 |
두 오류 모두 튜플이 변경될 수 없는 자료형이라는 본질적인 특성 때문에 발생했습니다. 만약 값을 변경하거나 요소를 추가하고 싶다면 튜플 대신 리스트를 사용해야 합니다.
'파이썬(Python)' 카테고리의 다른 글
| 파이썬, 내장 함수와 내장 자료형의 차이 (3) | 2025.08.17 |
|---|---|
| 파이썬, 튜플의 인덱싱(Indexing) 및 슬라이싱(Slicing) (3) | 2025.08.16 |
| 파이썬, range()함수에 대해 정리 (1) | 2025.08.16 |
| 시퀀스 자료형이란 (2) | 2025.08.16 |
| 컬렉션 자료형(Collection Data Types)에 대해서 간단히 정리 (8) | 2025.08.14 |
콘텐츠 내 자동삽입광고
