python输入exit怎么退出了_为何要用sys.exit()退出?

Python有4个不同的退出程序的函数,exit(),quit(),os_exit()和本文要介绍的sys.exit()。exit()和quit()是一样的,它俩的功能基本上与sys.exit()一样,只有os._exit()有些简单粗暴。

exit和quit函数

这两个函数的作用,就是直接退出程序,可以带一个参数作为程序的返回码,如果不带参数,默认就是返回0.

xinlin@ubuntu:~/test$ python3 -q

>>> exit(111)

xinlin@ubuntu:~/test$ echo $?

111

xinlin@ubuntu:~/test$ python3 -q

>>> quit(222)

xinlin@ubuntu:~/test$ echo $?

222

xinlin@ubuntu:~/test$ python3 -q

>>> exit()

xinlin@ubuntu:~/test$ echo $?

0

xinlin@ubuntu:~/test$ python3 -q

>>> quit()

xinlin@ubuntu:~/test$ echo $?

0

这两个函数一般在交互式的python解释器中使用。其实它俩也会抛出SystemExit异常,因此说跟sys.exit()一样。

sys.exit()函数

sys模块的exit函数,通过抛出一个SystemExit异常来尝试结束程序,Python代码可以捕获这个异常来进行一些程序退出前的清理工作,也可以不退出程序。sys.exit函数同样可以带一个参数来作为程序的退出码,默认是0.

>>> import sys

>>> try:

... sys.exit(101)

... except SystemExit as e:

... print(repr(e))

... print(str(e))

...

SystemExit(101)

101

>>>

看起来使用str()函数在except分支获取返回码,比较判断不同的返回码,并做响应的清理动作,是比较方便的(str与repr的区别)。另外一个细节,上面这段代码在Python解释器中执行,因为异常被捕获,所以不会导致解释器退出!

捕获了sys.exit()函数抛出的异常,处理之后,还要程序继续退出,就需要直接使用exit或quit函数。实践中,完整的使用sys.exit函数的逻辑应该是如下这样的代码:

import sys

def main():

sys.exit(123)

return

if __name__ == '__main__':

try:

main()

except SystemExit as e:

if str(e) == '123':

print('---123---')

exit(123)

一般在python脚本中都选择使用sys.exit函数退出程序,可以有个异常捕获机制来做清理扫尾的工作,程序会更加灵活健壮。

os._exit()函数

这个函数简单粗暴,就是直接退出python解释器,后面的代码都不执行了!一般程序不推荐使用这种退出方式。

补充一个细节:

在python线程中,使用sys.exit(包括exit和quit),都只能实现退出子线程,而不能退出主线程;如果在子线程中调用os._exit,可以实现整个程序的退出。

-- EOF --

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值