exit():结束整个程序。
在python中运行一段代码,如果在某处已经完成整次任务,可以用exit退出整个运行。并且还可以在exit()的括号里加入自己退出程序打印说明。不过注意在py3中要加单引号或双引号。
python的程序有多种退出方式:os._exit(), sys.exit(),exit()/quit()。
Help on built-in function exit in module sys:在模块sys中,可以帮助内置函数退出的。
一般是退出Python程序的首选方法。该方法中包含一个参数status,默认为0,表示正常退出, 其他都是异常退出。
sys.exit()会引发一个异常:SystemExit,这是唯一一个不会被认为是错误的异常。
如果这个异常没有被捕获,那么python解释器将会退出。如果有捕获此异常的代码,那么这些代码还是会执行。捕获这个异常可以做一些额外的清理工作。n默认值为0,0为正常退出,其他数值(1-127)为不正常,可抛异常事件供捕获。一般主程序中使用此退出。
SystemExit 并不派生自Exception 所以用Exception捕捉不到该SystemEixt异常,应该使用SystemExit来捕捉。
os._exit() 会直接将python程序终止,之后的所有代码都不会继续执行。退出 Python 解释器,不抛异常, 不执行相关清理工作,其后的代码都不执行。其使用会受到平台的限制,但我们常用的Win32平台和基于UNIX的平台不会有所影响, 常用在子进程的退出。一般来说os._exit() 用于在线程中退出,sys.exit() 用于在主线程中退出。
os._exit() 调用 C 语言的 _exit() 函数。
exit()/quit(),抛出SystemExit异常,类似于sys.exit()。一般在交互式shell中退出时使用。
综上,sys.exit()的退出比较优雅,调用后会引发SystemExit异常,可以捕获此异常做清理工作。os._exit()直接将python解释器退出,余下的语句不会执行。
exit() 跟 C 语言等其他语言的 exit() 应该是一样的。
一开始觉得exit()和sys.exit()用法完全一样,是不是一个函数,后来在stackoverflow中看到一个答案也不知道对不对,先这样理解吧:
exit
is a helper for the interactive shell -sys.exit
is intended for use in programs.
The
site
module (which is imported automatically during startup, except if the-S
command-line option is given) adds several constants to the built-in namespace (e.g.exit
). They are useful for the interactive interpreter shell and should not be used in programs.
exit
is defined in site.py and _sitebuiltins.py,sys.exit
does so in sysmodule.c
也就是说exit是用于用户交互式shell,而sys.exit才是内部编码使用的。site是自动导入的模块,类似于lang包,里面有一些可以直接用的函数比如exit,但多用于交互式的shell,而不应该用于编码中。
builtin.exit 是一个 Quitter 对象,这个对象的 call 方法会抛出一个 SystemExit 异常。
exit(0) 在很多类型的操作系统里,exit(0) 可以中断某个程序,而其中的数字参数则用来表示程序是否是碰到错误而中断。
exit(1) 表示发生了错误;exit(0) 则表示程序是正常退出的。
退出代码是告诉解释器的(或操作系统)。实际运用中可以使用任何整型数据,表示不同的自定义错误类型。