Python中的main函数与import用法

 更新时间:2022年11月09日 11:09:49   作者:xiongxyowo  
这篇文章主要介绍了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的问题

    这篇文章主要介绍了解决安装torch后,torch.cuda.is_available()结果为false的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Pytorch训练过程出现nan的解决方式

    Pytorch训练过程出现nan的解决方式

    今天小编就为大家分享一篇Pytorch训练过程出现nan的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python try except finally资源回收的实现

    Python try except finally资源回收的实现

    这篇文章主要介绍了Python try except finally资源回收的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python编程深度学习计算库之numpy

    Python编程深度学习计算库之numpy

    今天小编就为大家分享一篇关于Python编程深度学习计算库之numpy,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Python中生成器和yield语句的用法详解

    Python中生成器和yield语句的用法详解

    这篇文章主要介绍了Python中生成器和yield语句的用法,生成器是Python编程进阶中的重要知识点,需要的朋友可以参考下
    2015-04-04
  • Python之parser.add_argument解读

    Python之parser.add_argument解读

    这篇文章主要介绍了Python之parser.add_argument解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • python切片(获取一个子列表(数组))详解

    python切片(获取一个子列表(数组))详解

    这篇文章主要介绍了python切片(获取一个子列表(数组))详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python与Matlab混合编程的实现案例

    Python与Matlab混合编程的实现案例

    本文主要介绍了Python与Matlab混合编程的实现案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Python使用PyQt5/PySide2编写一个极简的音乐播放器功能

    Python使用PyQt5/PySide2编写一个极简的音乐播放器功能

    这篇文章主要介绍了Python中使用PyQt5/PySide2编写一个极简的音乐播放器功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • yolov5使用flask部署至前端实现照片\视频识别功能

    yolov5使用flask部署至前端实现照片\视频识别功能

    初学者在使用YOLO和Flask构建应用时,往往需要实现上传图片和视频的识别功能,本文介绍了如何在Flask框架中实现这一功能,包括文件上传、图片放大查看、视频识别以及识别后的文件下载,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-09-09

最新评论