您的位置:首页 > 编程语言 > Python开发

python sys.exit()、break、 exit()、quit()、os._exit()、return的区别

2017-08-16 07:57 706 查看
1.sys.exit()

函数说明:

标准的退出系统的方法。

exit([status])

退出系统,并抛出SystemExit(status)异常。

如果不传递status或传递None,默认当做0处理。

如果传递的status为数字,会被认为是系统的退出码。

如果传递的status为其他数据类型,status会被打印出来,并且系统的退出码为1.

如果不同try…except….捕获异常,并用traceback跟踪,sys.exit()方法抛出的异常是不会被发现的。但是需要注意,用try…except….抛出异常后,就不会退出系统了,会继续执行后面的语句。所以,想要退出系统时,不可以将sys.exit()方法放入ry…except….中

(1) 这三种方式sys.exit()、sys.exit(0)、sys.exit(None)意义相同,不返回退出码

import sys
import traceback
def test():
print "test in"
sys.exit()
print "test out"
try:
test()
except Exception as e:
print e
traceback.print_exc()
print "ending"


此种情况下只会输出:

test in


原因是sys.exit()方法抛出的异常不属于Exception类,所以不能打印异常信息。如果需要跟踪异常,并打印异常信息,我们需要修改捕获异常的方式,代码如下:

import sys
import traceback
def test():
print "test in"
sys.exit()
print "test out"
try:
test()
except:
traceback.print_exc()
print "ending"


输出结果为:

Traceback (most recent call last):
File "E:\python_program\Test_python2_7\src\exit.py", line 16, in <module>
test in
test()
File "E:\python_program\Test_python2_7\src\exit.py", line 13, in test
sys.exit()
SystemExit
ending


(2) 参数为大于0的数字时, sys.exit(n)

import sys
import traceback
def test():
print "test in"
sys.exit(11111111)
print "test out"
try:
test()
except:
traceback.print_exc()
print "ending"


输出结果中会带有传递的数字,将其作为退出码:

Traceback (most recent call last):
File "E:\python_program\Test_python2_7\src\exit.py", line 15, in <module>
test in
ending
test()
File "E:\python_program\Test_python2_7\src\exit.py", line 12, in test
sys.exit(11111111)
SystemExit: 11111111


(3) 参数其他数据类型时,包括dict、list、set、str等,sys.exit(other_type)

输出结果如下:

SystemExit: {'key': 'value'}
或者
SystemExit: [
9797
'value1', 'value2']
或者
SystemExit: set(['value2', 'value1'])
或者
SystemExit: string


2.os._exit(n)方法

使用环境:该方法可以用在Unix, Windows系统中。

作用:退出进程时不调用清理处理器,也不清洗stdio缓冲区,退出码为n。

Note

退出系统的标准方法是sys.exit(n)。_exit() 在通常情况下被用在退出子进程。

该方法不会抛出异常,直接退出系统。

3.exit()和quit()方法

quit([code=None])

exit([code=None])

主要用于退出交互式解释器shell,不应该被用在程序中,但也可以用于程序中。

用在程序中,如果为其捕获异常,也可以抛出SystemExit异常和退出码。不捕获则直接退出。与sys.exit()不同的是,exit(0)的退出码为0,而sys.exit(0)不输出退出码。

4.break

跳出最近的一层循环

5.return

跳出函数,并返回结果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: