Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 NameError 예외를 잡는 방법 완벽 가이드

NameError란 무엇인가?

파이썬에서 NameError는 코드가 현재 범위(scope)에 존재하지 않는 이름을 참조할 때 발생하는 예외입니다. 대표적인 예로는 정의되지 않은 변수 이름을 사용하거나, 변수를 선언하기 전에 먼저 사용하는 경우가 있습니다.

이러한 오류는 try-except 블록을 사용하면 손쉽게 잡아낼 수 있으며, 예외 객체를 통해 어떤 이름이 문제였는지 확인할 수 있습니다.

예외 잡기 예제

다음 코드는 정의되지 않은 변수를 참조할 때 발생하는 NameError를 잡고, 예외 메시지와 타입을 함께 출력하는 예제입니다.

import sys

def foo():
    print(magnolia)

try:
    foo()
except NameError as e:
    print("예외 메시지:", e)
    print("예외 타입:", type(e).__name__)

실행 결과

예외 메시지: name 'magnolia' is not defined
예외 타입: NameError

코드 설명

  • magnolia라는 변수는 어디에도 정의되어 있지 않기 때문에, foo() 함수 내부에서 이를 출력하려는 순간 NameError가 발생합니다.
  • except NameError as e 구문이 해당 예외를 잡아 프로그램이 비정상적으로 종료되지 않도록 합니다.
  • type(e).__name__을 사용하면 발생한 예외의 클래스 이름(NameError)을 확인할 수 있으며, sys.exc_info()를 통해서도 동일한 정보를 얻을 수 있습니다.

NameError가 자주 발생하는 원인

  • 변수나 함수 이름의 오타
  • 변수를 정의하기 전에 사용하는 경우
  • 함수 내부에서 전역 변수에 잘못 접근하는 경우
  • 필요한 모듈이나 객체를 import하지 않은 경우

이처럼 try-except 블록으로 NameError를 처리하면, 사용자에게 친절한 안내 메시지를 제공하거나 기본값으로 대체하는 등 프로그램의 안정성을 크게 높일 수 있습니다.