파이썬은 실행 시점에 변수의 타입을 결정하는 '동적 타이핑(Dynamic Typing)' 언어입니다. 유연하다는 장점이 있지만, 서로 맞지 않는 타입끼리 연산을 시도하거나 잘못된 인수를 전달할 때 발생하는 TypeError는 개발자를 가장 괴롭히는 오류 중 하나입니다.

1. 'int' object is not subscriptable (데이터 타입 오해)
가장 흔하게 발생하는 TypeError 중 하나입니다. 파이썬에서 'subscriptable'하다는 것은 리스트(list)나 딕셔너리(dict)처럼 인덱스나 키를 통해 내부 요소에 접근할 수 있다는 뜻입니다.
발생 원인
- 정수(int)나 실수(float) 변수를 리스트처럼 인덱싱(예:
num[0])하려고 할 때 발생합니다. - 변수에 리스트가 담겨 있을 것으로 예상했으나, 실제로는 숫자형 데이터가 들어있는 경우입니다.
해결 방법
데이터의 타입을 확인하는 type() 함수를 활용해 변수의 정체를 먼저 파악해야 합니다. 만약 숫자를 문자열처럼 다루고 싶다면 str() 함수로 형변환을 거쳐야 합니다.
# 오류 사례
age = 25
print(age[0]) # TypeError 발생
# 해결 방법
age_str = str(25)
print(age_str[0]) # '2' 출력 성공
2. can only concatenate str to str (문자열과 숫자의 혼용)
자바스크립트와 같은 언어는 문자열과 숫자를 더하면 자동으로 숫자를 문자로 바꿔주지만, 파이썬은 엄격합니다. 타입이 다르면 연산을 거부합니다.
발생 원인
print("결과값: " + result)와 같이 문자열 뒤에 숫자 변수를 직접 더할 때 발생합니다.- 사용자로부터 입력받은 값(input은 항상 문자열)을 숫자와 계산하려고 할 때 발생합니다.
해결 방법: f-string 활용
가장 세련된 해결책은 파이썬 3.6부터 지원하는 f-string을 사용하는 것입니다. 별도의 형변환 없이도 다양한 타입을 문자열 안에 안전하게 삽입할 수 있습니다.
# 오류 사례
count = 10
print("개수: " + count) # TypeError
# 해결 방법 1: f-string (권장)
print(f"개수: {count}")
# 해결 방법 2: 명시적 형변환
print("개수: " + str(count))
3. 'NoneType' object is not iterable (반환값 확인)
반복문(for문)을 돌리려고 할 때 자주 마주치는 오류입니다. "반복할 수 없는(None) 대상에 대해 반복을 시도했다"는 뜻입니다.
발생 원인
- 함수가 값을 반환(return)하지 않아
None이 반환되었는데, 이를 리스트처럼 사용하려 할 때 발생합니다. - 리스트의
sort()메서드처럼 원본을 수정하고None을 반환하는 함수를 변수에 할당한 경우입니다.
해결 방법
해당 변수가 None인지 체크하는 조건문을 추가하거나, 함수가 반드시 예상된 타입(예: 빈 리스트 [])을 반환하도록 설계해야 합니다.
4. TypeError 예방을 위한 실무 팁
코드의 규모가 커질수록 타입 오류는 찾기 힘들어집니다. 이를 사전에 방지하는 두 가지 핵심 전략을 소개합니다.
타입 힌트(Type Hinting) 도입
파이썬 3.5 이상에서는 변수나 함수의 매개변수에 권장되는 타입을 명시할 수 있습니다. 이는 코드의 가독성을 높이고 에디터의 자동 완성 기능을 극대화합니다.
def add_numbers(a: int, b: int) -> int:
return a + b
핵심 요약 정리
- TypeError는 데이터 타입이 연산이나 함수 요구사항과 맞지 않을 때 발생한다.
- 숫자와 문자열을 합칠 때는 f-string을 사용하는 것이 가장 안전하고 빠르다.
- NoneType 오류가 난다면 함수의 리턴(return) 값이 누락되지 않았는지 확인하자.
- 장기적으로는 타입 힌트를 작성하는 습관을 통해 휴먼 에러를 방지하자.
'오류 > 파이썬' 카테고리의 다른 글
| [Python 파이썬] ModuleNotFoundError 오류 해결 방법 (0) | 2026.01.17 |
|---|---|
| [Python 파이썬] IndexError 오류 해결 방법 (0) | 2026.01.16 |
| [Python 파이썬] IndentationError 오류 해결 방법 (0) | 2026.01.14 |
| [Python 파이썬] SyntaxError 오류 해결 방법 (0) | 2026.01.13 |