Python中的main函数与import用法
main函数与import用法
在python中,如果自己封装的库文件中有函数外的语句,那么这些语句是会在库函数被导入时自动执行的,这样就会出现一些奇怪的问题,一个例子如下所示。
目录结构如下
- A.py
- B.py
B.py中的内容如下:
def print_B(): print("B") print("starting B")
A.py中使用import导入print_B()方法:
from B import print_B print_B()
结果如下:
starting B
B
可以发现B.py中的函数外语句是会自动先执行的。但有时候我们确实希望直接运行封装的库能够执行某些功能,但又不希望这些功能在被import的时候被触发,这个时候,就可以把这部分功能显式的放在main方法中。
修改后的B.py如下所示:
def print_B(): print("B") if __name__ == "__main__": print("starting B")
此时运行A.py,结果如下:
B
main函数的作用以及解释
python 中name == ‘__main__’ 的作用
- 经典的英文解释:Make a script both importable and executable
- 中文解释:使脚本可以被调用import并且也可以直接运行
1、直接运行
# cat test_fun.py def fun(): print(__name__) print('this is fun') if __name__ == '__main__': fun() print('this is main')
python test_fun.py __main__ this is fun this is main
2、被调用import
>>> import test_fun >>> test_fun.fun() test_fun this is fun
调用导入时:此处输出没有显示”main“,也就是说模块name = ‘main’ 下面的代码并未执行,main函数没有执行。
这个功能还有一个用处:
调试代码的时候,在”if name == ‘main‘“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
解决安装torch后,torch.cuda.is_available()结果为false的问题
这篇文章主要介绍了解决安装torch后,torch.cuda.is_available()结果为false的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-12-12Python try except finally资源回收的实现
这篇文章主要介绍了Python try except finally资源回收的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-01-01Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
这篇文章主要介绍了Python中使用PyQt5/PySide2编写一个极简的音乐播放器功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2020-02-02
最新评论