728x90
이 글에서는 Python 프로그래밍을 할 때 흔히 접하게 되는 NameError—정의되지 않은 이름 사용 문제의 정의와 주요 원인, 대표 사례, 해결 방법을 단계별 예제와 함께 살펴봅니다. 마지막에는 다음 챕터인 TypeError: 잘못된 자료형 연산 문제 예고를 포함합니다.
1. NameError란?
NameError는 프로그램이 참조하려는 이름(변수나 함수 등)이 현재 스코프(scope) 내에 정의되어 있지 않을 때 발생하는 예외입니다. 일반적으로 오타, 선언 순서 오류, 스코프 관리 미숙 등이 원인이며, 실행 중인 스크립트가 해당 이름을 찾지 못할 때 발생합니다.
2. 주요 발생 원인
- 변수 오타: 예를 들어 `persn`처럼 잘못된 이름을 사용한 경우
- 선언 순서 오류: 변수를 사용하기 전에 선언하지 않아 발생
- 스코프 범위 문제: 전역 변수와 지역 변수 혼동으로 이름을 찾지 못함
- 함수 인자 누락: 매개변수 이름을 잘못 사용하거나 전달하지 않은 경우
- 클래스 속성 접근 오류: `self` 파라미터를 빼먹거나 클래스 변수를 잘못 참조했을 때
- 대소문자 구분 오류: Python은 대소문자를 구분하므로 `Name`과 `name`을 다르게 인식합니다.
3. 실습 예제
아래 코드를 실행하면 NameError가 발생하는 대표적인 예시를 확인할 수 있습니다.
# 예제: 변수 오타 및 선언 순서 문제
def greet(name):
print(f"Hello, {persn}") # 변수 이름 오타 persn -> name
greet("Python")
print(greeting) # greeting 변수를 선언하지 않고 사용
4. 실행 결과 및 설명
터미널에 다음과 같은 메시지가 출력됩니다.
Traceback (most recent call last):
File "example.py", line 2, in
print(f"Hello, {persn}")
NameError: name 'persn' is not defined
During handling of the above exception, another error occurred:
Traceback (most recent call last):
File "example.py", line 5, in
print(greeting)
NameError: name 'greeting' is not defined
첫 번째 에러는 변수 이름 오타로 정의되지 않은 `persn`을 참조한 것이며, 두 번째 에러는 `greeting` 변수를 선언하지 않고 사용했기 때문입니다.
5. 해결 방법 & 디버깅 팁
- 오타 확인: 에러 메시지에 표시된 이름을 코드에서 검색하여 정확히 일치하는지 확인합니다.
- 변수 선언 위치 점검: 변수를 사용하기 전에 선언되었는지 확인합니다.
- 스코프 관리: 전역 변수와 지역 변수를 명확히 구분하거나 필요한 경우 `global` 키워드를 사용합니다.
- IDE/에디터 활용: PyCharm, VS Code의 IntelliSense나 lint 기능으로 정의되지 않은 이름을 사전에 잡아냅니다.
- 함수 인자 확인: 함수 호출 시 올바른 매개변수를 전달했는지, `self` 파라미터를 누락하지 않았는지 점검합니다.
- 테스트 추가: 유닛 테스트를 작성하여 미정의 이름 사용을 조기에 발견합니다.
6. 정리 및 다음 단계
이번 챕터에서는 NameError의 정의, 주요 원인, 실습 예제 및 해결 방법을 다뤘습니다. NameError는 대부분 오타나 스코프 오류로 발생하므로, 에러 메시지를 주의 깊게 읽고 코드 전체를 점검하면 빠르게 해결할 수 있습니다. 다음 챕터에서는 TypeError: 잘못된 자료형 연산을 다룰 예정이니 많은 관심 부탁드립니다.
반응형
'08.개발&프로그래밍 > 1.파이썬' 카테고리의 다른 글
5. ValueError(값이 유효하지 않을 때) 완벽 가이드 (0) | 2025.07.15 |
---|---|
4. Python TypeError(잘못된 자료형 연산) 완벽 가이드 (0) | 2025.07.15 |
2. Python IndentationError(들여쓰기 문제) 완벽 가이드 (0) | 2025.07.15 |
문제 해결 - 1. Python SyntaxError(문법 에러) 완벽 가이드 (0) | 2025.07.15 |
4. AI 시대 파이썬 개발자 로드맵과 진로: 자기개발 & AI 활용 전략 (0) | 2025.07.15 |