前言
在 Python 模块中看到 if __name__ == ‘__main__’: 这样的代码,究竟有什么作用呢?
意思是说:模块既可以被导入(到 Python shell 或者其他模块中),也可以作为脚本来执行。
__name__ 介绍
每一个python程序文件都有一个属性名,(你可以理解为是这个程序文件的潜在名字但是是给编译器看的),
如果你直接运行该程序文件,它的属性名默认被设置为’__ main__’ ,
而如果这个程序文件是在其他程序文件中导入,那么这个程序文件的属性名自动设置为该程序文件的文件名。
举例
有一个名为 calc.py 的模块,包含以下代码:
print(‘__name__:’, __name__)
当导入模块时,__name__ 是模块的文件名:
注意:在第一次导入模块时,调用这个模块的文件会执行一次这个模块里的所有代码(if __name__ == ‘__main__’: 的作用就是避免这次执行)
>>> import calc
__name__: calc
但是,如果将其作为脚本使用,__name__ 就是一个特殊的值 __main__:
$ python calc.py
__name__: __main__
结论
当模块被导入时,模块名称是文件名;而当模块作为脚本独立运行时,名称为 __main__。
回到最初的问题
if __name__ == ‘__main__’:?
通过上面的结论,可以推断出:只有当模块直接运行(即:不导入)时,才会执行 if 块内的代码。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/103300.html