main函数的两种使用功能
情况1:直接执行本py代码文件时,把包含的代码块视为脚本代码顺序执行;
情况2:当本py代码文件作为其他代码import对象时,不执行如下被包含的代码
下面可以通过程序来更好地了解main函数的作用,这里我们编写两段程序进行说明
①main_function.py
import sys # 标准库system
from PyQt5.QtWidgets import QApplication, QWidget
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.resize(350, 350)
self.show()
print('__name__ value: ', __name__)
if __name__ == "__main__":
print('this message is from main function')
app = QApplication(sys.argv) # sys.argv是一个从程序外部获取参数的桥梁
ex = Example()
sys.exit(app.exec_())
运行main_function.py文件
运行结果:
__name__ value: __main__
this message is from main function
并输出窗口
可以看到此时__name__
的值是__main__
,并运行了if __name__ == "__main__":
后面的代码。
②main_module.py
import main_function#引入main_function.py文件
import sys
from PyQt5.QtWidgets import QApplication, QWidget
app = QApplication(sys.argv) # sys.argv是一个从程序外部获取参数的桥梁
b = main_function.Example()
sys.exit(app.exec_())
运行main_module.py文件
运行结果:
__name__ value: main_function
并输出窗口
可以看到此时__name__
的值是main_function
,并且并未运行main_function.py文件中if __name__ == "__main__":
后面的代码。
对比两段程序运行结果可发现,当直接运行包含main函数的程序时,main函数会被执行,同时程序的__name__
变量值为'__main__'
。
当包含有main函数的程序被作为module被import时,该module程序(main_function.py)对应的__name__
变量值为该module对应的函数名称,因此该module程序(main_function.py)中的main函数不会被执行。