- 프로그램 종료 함수
- sys.exit([arg]) (가장 권장되는 방법)
- 호출 시 SystemExit 예외 발생
- 인자: 0은 정상종료, 그 외의 숫자(보통 1)는 에러로 인한 비정상 종료를 의미
- os._exit(n) (즉시 강제 종료)
- 프로세스를 즉시 종료함.
- 주로 자식 프로세스(fork)를 종료할 때 사용. 일반적인 상황에선 쓰지않음
- 메인 프로그램이 작동하다가 너무 오래걸리는 작업이 있을 때 fork()라는 기술을 통해 자식 프로세스가 생기는데,
- 자식프로세스가 종료될 때 sys.exit()을 쓰면 메인에서 쓰고있던 공용 자원을 건드리거나 엉뚱한 실수를 할 수 있음
- 따라서 os._exit()을 통해 뒷정리 신경쓰지 않고 자식프로세스만 즉시 종료될 수 있도록 명령함
- 메인 프로그램이 작동하다가 너무 오래걸리는 작업이 있을 때 fork()라는 기술을 통해 자식 프로세스가 생기는데,
- 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을 던지며 죽으려고 하면 무슨 일인지 설명해주기 위해 오류 메시지를 던지는 것


'Python 공부' 카테고리의 다른 글
| Truthiness (참 같은 값), Truthy/Falsy, 단락평가 (0) | 2026.01.09 |
|---|---|
| 가변 (Mutable) vs 불변 (Immutable) (0) | 2026.01.09 |
| isalpha, isdigit, isinstance 함수 (0) | 2026.01.09 |
| 조건문 / 반복문 활용, 연산자 비교 우선순위, 단락평가 (1) | 2026.01.09 |
| 할당 vs 얕은 복사 vs 깊은 복사 / In-place 제자리 수정 vs Out-of-place 외부 생성 (0) | 2026.01.09 |