Python模块sys之exit

前言

python通过调用sys.exit(status)来退出程序,并且通过status指定退出时的状态码,exit()是Python内置模块sys的一个函数。需要先导入sys模块再使用exit。在程序执行过程中发现错误或满足某些条件,需要中止程序时,使用sys.exit()退出非常有用。

1.1 用法

sys.exit(status=None, /)

1.2 描述

python的sys模块的exit函数,用于退出当前程序,并将status当作系统退出码。

若status为整数,将作为系统退出码。

若status为非整数,则status被打印,并且系统退出码置为1。

若status未送、或为None、或为0,则系统退出码为0,表示正常退出。

若status为非0,表示异常退出。

在调用 sys.exit() 后,脚本中位于其后的任何代码都不会被执行。

1.3 参数

status:状态码,可选。默认为None,对应状态码为0.

1.4 示例

1.4.1 未用exit

(1) 没有sys.exit时,程序正常退出,退出码为0.

文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容

print('梯阅线条')

执行结果,程序结束退出码为0。

Python模块sys之exit1 (2) 没有sys.exit时,程序异常退出,退出码为1.

文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容。

print('梯阅线条'+1)

执行结果,程序结束退出码为1. Python模块sys之exit2

1.4.2 exit(0)

调用sys.exit后,其后代码不执行,若status送0,即sys.exit(0),则退出码为0,表示程序正常退出。

文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容

import sys
print('执行开始')
sys.exit(0)
print('执行结束')

执行结果,使用sys.exit(0)结束程序,退出码为0,其后代码不会被执行。

Python模块sys之exit3

1.4.3 exit(空)

若status未送,即sys.exit(),则退出码为0,表示程序正常退出。

文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容

import sys
print('执行开始')
sys.exit()
print('执行结束')

其中,“print('执行结束')”不会被执行。执行结果,使用sys.exit()结束程序,退出码为0,其后代码不会被执行。

Python模块sys之exit4

1.4.4 exit(None)

若status送None,即sys.exit(None),则退出码为0,表示程序正常退出。

文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容

import sys
print('执行开始')
sys.exit(None)
print('执行结束')

执行结果,使用sys.exit(None)结束程序,退出码为0,其后代码不会被执行。

Python模块sys之exit5

1.4.5 exit(1)

若status送1,即sys.exit(1),则退出码为1,表示程序异常退出。

文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容

import sys
print('执行开始')
sys.exit(1)
print('执行结束')

执行结果,使用sys.exit(None)结束程序,退出码为1,其后代码不会被执行。

Python模块sys之exit6

1.4.6 exit(非整数)

若status送非整数,即sys.exit(非整数),则status将被打印,并且退出码为1,表示程序异常退出。

文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容

import sys
print('执行开始')
sys.exit('退出码非整数,会被打印,且退出码被置为1')
print('执行结束')

执行结果,status非整数时status被打印,退出码为1,其后代码不会被执行。

Python模块sys之exit7

1.4.7 SystemExit

调用sys.exit(status)时,不管status是多少,都会触发SystemExit异常,不属于Exception类,使用traceback. format_exc()打印异常堆栈。

文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容

import sys
import traceback

try:
    print('执行开始')
    # 调用 sys.exit() 触发 SystemExit 异常
    sys.exit(0)
except SystemExit as se:
    print('捕获SystemExit异常,退出码:', se)
    # 打印异常堆栈
    print(traceback.format_exc())

print('执行结束')

捕获sys.exit()触发的SystemExit异常后,之后的代码“print('执行结束')”是可以正常执行的,程序也是正常退出的。执行结果如下:

Python模块sys之exit8