博客
关于我
python中为什么要有if __name__ == '__main__'?
阅读量:321 次
发布时间:2019-03-03

本文共 807 字,大约阅读时间需要 2 分钟。

if __name__ == '__main__' 是 Python 中一个常见的技术,用于控制模块或脚本的执行方式。它的作用是检测当前脚本是通过命令直接运行,还是作为其他脚本的模块被导入。在前者情况下,代码会执行;在后者情况下,由于 __name__ 不等于 '__main__',该语句的条件不满足,代码不会执行。

例如,在 a.py 中,如果你有以下代码:

def plus(a, b):    return a + bres = plus(1, 2)print(res)

当直接运行 a.py 时,__name__ 会被设置为 '__main__',因此代码会正常执行,输出 3

而在 b.py 中,你可以这样导入并使用 plus 函数:

from a import plusres = plus(2, 3)print(res)

在导入过程中,Python 会自动执行 a.py 中的代码,导致 res = plus(1, 2)print(res) 也会被执行,结果会是 3a5

为了避免这种情况,可以在 a.py 中添加 if __name__ == '__main__' 这一判断:

def plus(a, b):    return a + bif __name__ == '__main__':    res = plus(1, 2)    print(res)

这样,当 a.py 被直接运行时,__name__'__main__',代码正常执行;但当 a.py 被作为模块被导入(如在 b.py 中被导入)时,__name__ 不为 '__main__'if 语句的条件不成立,plus 函数不会被执行,避免了不必要的操作。

通过这种方式,可以确保模块被导入时不会执行其代码,只有在主程序运行时才执行。这种方法非常有用,特别是在开发可重用模块时,可以避免因导入操作触发副作用。

转载地址:http://bodq.baihongyu.com/

你可能感兴趣的文章
PIL Image转Pytorch Tensor
查看>>
PIL&QOOT;IOERROR:带有大图像的图像文件被截断(&Q)
查看>>
PIL.Image、cv2的img、bytes相互转换
查看>>
PIL.Image进行图像融合显示(Image.blend)
查看>>
pilicat-dfs 霹雳猫-分布式文件系统
查看>>
Pillow lacks the JPEG 2000 plugin
查看>>
SpringBoot之ElasticsearchRestTemplate常用示例
查看>>
ping 全网段CMD命令
查看>>
ping 命令的七种用法,看完瞬间成大神
查看>>
Pinia入门(快速上手)
查看>>
Pinia:$patch的使用场景
查看>>
Pinia:$subscribe()的使用场景
查看>>
Pinpoint对Kubernetes关键业务模块进行全链路监控
查看>>
Pinterest 大规模缓存集群的架构剖析
查看>>
pintos project (2) Project 1 Thread -Mission 1 Code
查看>>
PinYin4j库的使用
查看>>
PIP
查看>>
pip install goose-extractor // SyntaxError: Missing parentheses in call to 'print'
查看>>
pip install mysqlclient报错
查看>>
pip install 出现报asciii码错误的解决
查看>>