if __name__ == __main___一文搞懂 if __name__ == '__main__'_weixin_39934296的博客-程序员宅基地

技术标签: if __name__ == __main__  if __name__ == __main__:  

生信必备的Python入门到进阶干货,已整理在菜单栏,敬请查阅

在写Python脚本时,总会遇到 if __name__ == '__main__',生信背景的我们有必要了解这个是啥。

举个例子,新建 example_module.py:

print('入门BioPython')def main():    print('进阶BioPython')if __name__ == '__main__':    main()    print('大师BioPython')

运行:

入门BioPython进阶BioPython大师BioPython

然后,在同一文件夹下,新建 main.py:

import example_module

运行:

入门BioPython

与之前 example_module.py 代码运行结果相比,只输出了"入门BioPython"

, if __name__=="__main__": 之前的语句被执行,之后的并没有被执行。

现在,我们在 example_module.py的 if __name__ == "__main__": 之前加一行代码,将 __name__ 打印出来:

print('入门BioPython')def main():    print('进阶BioPython')print(__name__)if __name__ == '__main__':    main()    print('大师BioPython')

运行结果如下:

入门BioPython__main__进阶BioPython大师BioPython

可以看出,此时变量 __name__ 的值为 "__main__" 。

再次执行 main.py,执行结果如下:

入门BioPythonexample_module

此时,example_module.py 中的__name__变量值为“example_module”,不满足 __name__=="__main__"的条件,无法执行相关代码块。

由于每个Python文件都包含内置的变量:__name__,当运行模块被直接执行的时候,__name__等于文件名(包含后缀.py)。如果import到其他模块中,则__name__等于模块名(不包含后缀.py)。重点:“__main__”等于当前执行文件的名称(包含后缀.py)。所以当模块被直接执行时,__name__ == '__main__';而当模块被import到其他模块中时,__name__ != '__main__'。

简而言之:当模块直接运行时,条件成立,代码将被运行。当模块被导入时,条件不成立,代码不运行。

938e559c3de5e20f376708a4a0495a02.gif

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39934296/article/details/111212678

智能推荐

HTML实验_html实验csdn_mm114820的博客-程序员宅基地

1.下载相关软件:apache tomcat2.学习时参考资料: W3School 手册或者 http://www.w3school.com.cn/或者HTML中文手册

iOS录音_带颜值的程序员的博客-程序员宅基地

采用的AVAudioRecorder这个框架来进行录音这个录音跟官方网站上的speakHere有些区别,最大的区别是,这个必须要录制完成才能处理文件,而speakhere示例是可以实现边录制边上传的效果。import import

第十一章:李淳风的秘谋_小小∽的博客-程序员宅基地

第十一章:李淳风的秘谋  迟磊不停的点头,表示出同意的样子。“这才差不多!”李丽质说道。“既然,你认了,护卫!”李丽质说道。“在!”护卫回答到。“释放迟磊。”李丽质说道。就这样迟磊被释放...

低代码快速开发平台 JNPF 3.4旗舰版 /微服务、单体 、JAVA 和.net版本_m0_73482679的博客-程序员宅基地

JNPF快速开发平台具备RBAC功能、Xss防跨站攻击、自动生成前后端代码、多种存储系统、多租户等等多个功能和模块,支持多业务系统并行开发

android忠告_android 忠告_Kaycsdner的博客-程序员宅基地

首页代码话题问答标签关于登录注册首页 › 安卓开发 › android开发一个2年安卓开发者的一些忠告泡在网上的日子 / 文 发表于2016-10-06 14:17 第15787次阅读 0编辑推荐:稀土掘金,这是一个针对技术开发者的一个

Maven - 7、聚合、继承、单继承问题详解_pom单继承_Q.E.D.的博客-程序员宅基地

需要掌握聚合的使用掌握继承的使用掌握单继承问题解决方案掌握依赖管理和插件管理的使用还是那句话,建议大家下去了多练练,都操作一遍,加深理解!

随便推点

CentOS、Ubuntu、Debian三个linux比较异同_XiaoHuBeiPlus的博客-程序员宅基地

Linux有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。商业版本以Redhat为代表,开源社区版本则以debian为代表。这些版本各有不同的特点,在不同的应用领域发挥着不同的作用,不能一概而论。而绝大多数VPS上只提供开源社区维护的发行版本。下面就这些不同的Linux发行版进行简单的分析。UbuntuUbuntu近

解决:HTTP 错误 404.2 - Not Found. 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面_我是周洲的博客-程序员宅基地

错误重现:        在发布网站的过程中,虽然不是第一次发布了,但是还是遇到了很多的问题。为了以后可以轻松解决此类问题还是积累下来比较好。问题:HTTP 错误 404.2 - Not Found. 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。错误配置环境:WIN7+IIS6.0解决问题:

Android混淆从入门到精通_eastRiseWm的博客-程序员宅基地

Android混淆从入门到精通2016-09-29 CPPAlien CocoaChina▲点击上方“CocoaChina”关注即可免费学习iOS开发原文链接:http://www.jianshu.com/p/7436a1a32891作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而

MongonDB学习笔记(一)查询_攻城的蒂巴格的博客-程序员宅基地

首先往数据库集合里面插入几条数据。测试数据:> db.users.insert({username:"mongo", url:"webinglin.github.io", tags:["mongodb", database","nosql"],likes:999, author:"linwenbin"})> db.users.insert({username:"redis", url:"

C语言获取当前系统时钟-程序员宅基地

C语言获取当前系统时钟

Ajax运作机制介绍_ajax机制_oceanheaven_web的博客-程序员宅基地

关于ajax,是最近炒得非常火的一种技术,并且时下它也是非常流行。当然,它并不是什么新技术,而是在各种已有的技术和支持机制下的