Python中main函数的使用
在查看Python代码中,经常会看到类似这样的代码:
1 | # module.py |
这里直接运行文件可以获得输出内容:
1 | $ python3 module.py |
现在我们在另一个文件中将module.py
作为模块导入并运行:
1 | # main.py |
1 | $ python3 main.py |
我们修改module.py
文件,在测试中我们经常会这么写:
1 | # module.py |
分别运行module.py
main.py
:
1 | $ python3 module.py |
我们注意到,main.py
在运行时输出了两遍。这是因为python解释器第一次导入一个模块时,解释器会为我们找到并执行其顶层代码。其中包括任何变量声明、函数和类定义,以及任何顶层的可执行代码。
故为了避免我们将文件作为模块导入使用时运行不必要的代码,需要使用if __name__ == "__main__":
对当作模块导入时不需要运行的部分进行屏蔽。
但是,当作模块导入并不需要使用if __name__ == "__main__":
的情况也会存在,其中最有名的就是import this
使得程序在运行时输出大名鼎鼎的PEP 20 – The Zen of Python。
在代码测试部分中添加if __name__ == '__main__':
避免不必要的初始化是一个好习惯,也可以按照需求进行选择。