sys、sys.argv和sys.exit的解释说明
如下代码中有3处使用了sys,那它到底有何用呢?
# 导入需要的包
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv) #创建一个应用程序(比不可少的)
#控件操作
window =QWidget() #创建一个窗体
window.setWindowTitle("第一个PyQt5窗口设计实例")
window.resize(500,500) #设置窗体大学
window.move(500,200) #设置窗体显示位置(相对于屏幕的左上角位置)
lable=QLabel(window) #创建一个标签控件
lable.setText("Hello word!")
lable.move(200,200)
window.show() #窗口显示
#开始执行应用程序,并进入消息循环
sys.exit(app.exec_())
1、sys.argv代表什么意思?
我们使用一个简单的例子来说明。
# 文件名:pyqt5-sys分析.py
import sys
#我们运行代码的方式有2种,(1)是右击点击run;(2)命令行 python 代码名称
args = sys.argv
print(args)
输出结果为:
D:\ProgramFiles2019(64)\Python37\python.exe D:/ProgramFiles64/MyCode_Files/Python+PyQT/Qttest01/pyqt5-sys分析.py
['D:/ProgramFiles64/MyCode_Files/Python+PyQT/Qttest01/pyqt5-sys分析.py']
Process finished with exit code 0
可以看出结果是:文件名的路径,它是已列表形式输出。[‘D:/ProgramFiles64/MyCode_Files/Python+PyQT/Qttest01/pyqt5-sys分析.py’]
下面我们再看看终端Terminal的输出结果:【是当前代码文件的工作目录】
我们可以在此窗口下使用命令执行pyqt5-sys分析.py文件,输入方式如下:
=====================================
我再上面代码的基础上添加几句代码,我们再看一下结果:
如果我们在Terminal中执行命令:python pyqt5-sys分析.py 后面再输入3个数字 1 2 3
我们可以看到结果是一个列表,它表示:通过命令行可以将参数传递给系统。
pyqt5-sys分析.py
1
2
3
上面这4个值相当于是待传给系统的参数值。
所以,sys.argv——表示系统的形参(待传递给系统的参数变量,它可以是一个值也可以是多个值),多个参数时的排列方式参考python的列表。
2、sys.exit()的功能解释
基本概念:
ys.exit(n) 退出程序引发SystemExit异常, 可以捕获异常执行些清理工作. n默认值为0, 表示正常退出. 其他都是非正常退出. 还可以sys.exit(“sorry, goodbye!”); 一般主程序中使用此退出.
sys.exit([arg])
arg参数表示当前状态值。看下图提示框。
sys.exit(exit_code) 表示系统进程退出时对应的退出码,0——表示正常退出(我们在执行代码时,若最后一行看到一个0时,表示程序正确);非0——表示程序有错误、执行未完成或程序正在执行等。可以看下面一个例子
上面这段代码有一个错误,print(args3),多输入一个3,导致找不到变量args3,我们看下面的输出结果:
【下面再看一个例子】我们执行一个debug窗口
run框的输出结果为:
为什么呢?
主要是因为
(1)程序执行正确,没有提示错误;
(2)“运行窗口还没有关闭(退出)”;
如果我们手动正常关闭窗口,表示正确执行退出过程,则输出值为0的退出码。结果如下图
【再看一个退出码非0和1值的例子】
我们将此也文章最前面的程序中的某句代码注释掉,然后run。
运行结果如图所示:
退出为:-1073…——表示程序内部错误