Python 공부

프로그램 종료 함수

myun0506 2026. 1. 9. 17:03

- 프로그램 종료 함수

  • sys.exit([arg]) (가장 권장되는 방법)
    • 호출 시 SystemExit 예외 발생
    • 인자: 0은 정상종료, 그 외의 숫자(보통 1)는 에러로 인한 비정상 종료를 의미
  • os._exit(n) (즉시 강제 종료)
    • 프로세스를 즉시 종료함.
    • 주로 자식 프로세스(fork)를 종료할 때 사용. 일반적인 상황에선 쓰지않음
      • 메인 프로그램이 작동하다가 너무 오래걸리는 작업이 있을 때 fork()라는 기술을 통해 자식 프로세스가 생기는데,
        • 자식프로세스가 종료될 때 sys.exit()을 쓰면 메인에서 쓰고있던 공용 자원을 건드리거나 엉뚱한 실수를 할 수 있음
        • 따라서 os._exit()을 통해 뒷정리 신경쓰지 않고 자식프로세스만 즉시 종료될 수 있도록 명령함
  • exit() 및 quit() (인터프리터용)
    • site 모듈에 정의되어있음
    • sys.exit()이 '명령'이라고 칠 때 exit()은 '부탁'인 셈.
      • 인터랙티브 환경에서는 exit()을 해도 안끝내고 다음 코드로 넘어가버리는 경우가 생김
  • raise SystemExit
    • sys.exit()가 import sys 없이도 동작하는 방식
import sys

try: 
  age = int(input("나이를 입력하세요: ")) 
except ValueError: 
  print("숫자만 입력해야 합니다.") 
  sys.exit(1) 

if age < 0 or age > 150: 
  print("잘못된 나이입니다.") 
  sys.exit(1)

elif age < 7: 
  price = 0 
elif age < 19: 
  price = 8000 
elif age < 65: 
  price = 12000 
else: 
  price = 6000 

print(f"요금은 {price}원입니다.")
import sys

try:
  weight, height = map(float,input("몸무게와 키를 입력하세요: ").split())
  bmi = weight / ((height/100)**2)
except ZeroDivisionError:
  print("0으로 나눌 수 없습니다.")
  sys.exit(1)


if weight <= 0 or height <= 0:
  print("잘못된 입력입니다.")
  sys.exit(1)

if bmi >= 0 and bmi < 18.5:
  result = "저체중"
elif bmi < 23:
  result = "정상"
elif bmi < 24:
  result = "과체중"
else:
  result = "비만"

print(f"{result}입니다.")
  • 일반 파이썬 (.py) 파일을 실행할 때와 인터랙티브 환경 (IPython) 에서는 실행 방식이 다름
    • 일반적으로는 sys.exit(1)을 만나면 그냥 터미널 프롬프트로 조용히 돌아감
    • 인터랙티브 환경에서는 사용자와 대화하는 것이 목적이므로 SystemExit을 던지며 죽으려고 하면 무슨 일인지 설명해주기 위해 오류 메시지를 던지는 것

일반 파이썬 환경일 때 (.py 파일 실행)
Colab/Jupyter Notebook과 같은 일반적인 프로그래밍 환경이 아닐 때