How to Exit a Program in Python
What you’ll build or solve
You’ll stop a Python program on purpose, either after finishing work or when a condition fails.
When this approach works best
Exiting a program works well when you:
Learn Python on Mimo
- Stop early after validation fails, like missing config or bad input.
- End a CLI tool after printing help, version info, or an error message.
- Quit a loop-driven script after a user chooses an exit option.
Avoid forcing an exit inside reusable functions or libraries. Return values or raise a specific exception instead, then let the caller decide when to stop.
Prerequisites
- Python installed
- You know how to run a Python script
Step-by-step instructions
1) Let the program end naturally
A Python script ends when it reaches the end of the file. This is the cleanest “end” for most scripts.
Bash
print("Start")
print("All done")
If you are inside a function, use return to end that function.
defgreet(name):
ifnotname:
return
print("Hi",name)
greet("")
print("Program continues")
What to look for:
return stops only the current function, not the whole program.
2) Exit early in scripts with sys.exit()
Use sys.exit() when you want to stop the whole program immediately. You can exit with a status code, which is useful for command-line tools and automation.
CSS
importsys
config_ok=False
ifnotconfig_ok:
print("Missing config")
sys.exit(1)
print("This will not run")
Option A: Exit with success
LUA
importsys
print("Finished successfully")
sys.exit(0)
Option B: Exit with a message
Passing a string prints it to the console and exits with a non-zero code.
importsys
sys.exit("Invalid arguments")
What to look for:
sys.exit() is the reliable choice for scripts. exit() and quit() exist mainly for interactive sessions (the Python REPL) and can behave differently in scripts.
Also, sys.exit() raises a SystemExit exception. This matters if you catch broad exceptions and accidentally swallow the exit.
Examples you can copy
Example 1: Exit when required input is missing
LUA
importsys
path=""
ifnotpath:
sys.exit("Missing --path")
Example 2: Exit with different status codes
importsys
ok=True
ifok:
sys.exit(0)
else:
sys.exit(1)
Example 3: End a menu program when the user chooses “0”
LUA
whileTrue:
choice=input("Choose 1/2 or 0 to quit: ").strip()
ifchoice=="0":
break
ifchoice=="1":
print("Option 1")
elifchoice=="2":
print("Option 2")
else:
print("Unknown option")
print("Bye")
Example 4: Stop inside a function, not the whole program
defparse_age(text):
text=text.strip()
ifnottext.isdigit():
returnNone
returnint(text)
age=parse_age("x")
print(age)
print("Program continues")
Example 5: Exit early after printing help
CSS
importsys
args= ["--help"]
if"--help"inargs:
print("Usage: tool.py [--help] [--version]")
sys.exit(0)
print("Run the tool")
Common mistakes and how to fix them
Mistake 1: Using return and expecting the whole program to stop
What you might do
defmain():
print("Stopping")
return
main()
print("Still running")
Why it breaks
return stops only the function. The program continues after the call.
Fix
Use sys.exit() when you need to end the program from the main script path.
importsys
defmain():
print("Stopping")
sys.exit(0)
main()
print("This will not run")
Mistake 2: Catching exceptions and preventing the program from exiting
What you might do
PHP
importsys
try:
sys.exit(1)
exceptBaseException:
print("Still running")
Why it breaks
Catching BaseException also catches SystemExit, so the program does not exit.
Fix
Avoid except BaseException unless you have a strong reason. If you must catch it, re-raise SystemExit.
importsys
try:
sys.exit(1)
exceptSystemExit:
raise
Troubleshooting
If your script “doesn’t exit,” look for except BaseException or a bare except: that catches SystemExit. Re-raise SystemExit.
If CI or a shell treats your run as failed, you exited with a non-zero status. Use sys.exit(0) for success.
If your program ends too early, search for sys.exit() calls that run on import. Keep exits inside main() or behind a condition.
If you want to stop only a function, use return instead of exiting the entire program.
If your exit message does not show up, print the message before exiting, or pass a string to sys.exit().
Quick recap
- Let scripts end naturally when possible.
- Use
returnto stop a function. - Use
sys.exit(code)to exit a program in scripts, with0for success and non-zero for errors. - Use
sys.exit("message")to exit with a message. - Prefer
sys.exit()overexit()andquit()in scripts.
Join 35M+ people learning for free on Mimo
4.8 out of 5 across 1M+ reviews
Check us out on Apple AppStore, Google Play Store, and Trustpilot