如何理解if __name__ == '__main__'
Python初学者在学习代码时常常会看到if __name__== '__main__':
这样的代码,这个是什么意思呢?
Python中有很多内置变量和内置方法(也称魔术变量/魔术方法),为了避免和用户的变量冲突,内置变量和内置方法通常以两个下划线开头和结尾。
常见的内置变量有:
__file__
:表示当前文件(路径)__package__
:当前文件所在包名__name__
:当前模块名__cached__
: 当前缓存路径__buildins__
: 当前可用所有内置方法(字典)
注意这些都是正常的变量,使用时不加引号。
内置(魔术)方法就更多,如__init__
、__str__
、__get_attr__
等等。
所以,if __name__ == '__main__':
是判断当前模块名是不是字符串'__main__'
。
我们知道Python中每个文件(模块)都可以导入其他模块。
当前运行的文件(模块)被称为主模块,此时其模块名__name__
为字符串'__main__'
。
而其他导入的模块的模块名__name__
则为导入的模块名(导入路径+文件名去掉.py)。
例如, 有两个文件a.py和b.py,a中导入b模块执行,代码如下:
b.py代码
print('我是b模块,我的模块名为', __name__)
if __name__ == '__main__':
print('只有我自己运行时才会打印,别人导入我时不会打印')
a.py代码
import b
print('我是a模块,我的模块名为', __name__)
运行a.py后打印结果为:
我是b模块,我的模块名为 b
我是a模块,我的模块名为 __main__
这里我们可以看到a模块是主模块,及运行的是a.py文件。b.py中if __name__=='__main__':
中的代码没有打印。
如果我们运行b.py,则会打印if __name__=='__main__':
中的代码,运行结果如下:
我是b模块,我的模块名为 __main__
只有我自己运行时才会打印,别人导入我时不会打印
因此 if __name__ == '__main__':
可以用来判断是从当前文件运行的,如果是当前模块才执行if里面的代码。
也称为模块私有代码, 常用作测试当前模块使用,并且不影响别的模块导入使用。
作者:韩志超
出处:https://www.cnblogs.com/superhin/p/16103732.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
如有问题,请微信联系 superz-han,并发送原文链接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix