python:浅析python 中__name__ = ‘__main__’ 的作用_python tkinter __name__ == __main__ mainloop-程序员宅基地

技术标签: Python  

有句话经典的概括了这段代码的意义:

“Make a script both importable and executable”

意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行

这句话,可能一开始听的还不是很懂。下面举例说明:

先写一个模块:

# module.py
def main():
  print "we are in %s"%__name__

if __name__ == '__main__':
  main()

 

这个函数定义了一个main函数,我们执行一下该py文件发现结果是打印出”we are in __main__“,说明我们的if语句中的内容被执行了,调用了main():

但是如果我们从另我一个模块导入该模块,并调用一次main()函数会是怎样的结果呢?

# anothermodle.py

from module import main
main()

 

其执行的结果是:we are in module

但是没有显示”we are in __main__“,也就是说模块__name__ = ‘__main__’ 下面的函数没有执行。

这样既可以让“模块”文件运行,也可以被其他模块引入,而且不会执行函数2次。这才是关键。

总结一下:

如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == ‘__main__’“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字而不是__main__。

这个功能还有一个用处:调试代码的时候,在”if __name__ == ‘__main__’“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!

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

智能推荐

css鼠标hover的时候变成小手型_html鼠标变成小手-程序员宅基地

文章浏览阅读7.7w次,点赞11次,收藏13次。通过css样式改变鼠标形状a:hover{cursor:pointer}_html鼠标变成小手

点云从入门到精通技术详解100篇-基于激光点云语义的环境感知(续)-程序员宅基地

文章浏览阅读146次。KITTI数据集[ 48]由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目 前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。该数据集用于评测深度 预测与补全、测程、目标检测与追踪、语义分割等计算机视觉技术在车载环境下的性能。

点云从入门到精通技术详解100篇-点云特征学习模型及其在配准中的应用(续)_点云配准从入门到精通pdf-程序员宅基地

文章浏览阅读178次。分布,针对这一问题,本章提出了一种自适应的邻域特征提取模型,可以根据密度分。法,但是这两种主流的方法都会由于搜索范围的限制导致邻域大小难以确定,但是盲。的第一步是为点云中的每一个点搜索候选邻域,在本章的方法中,采用了一种最常见。的解决方法,即直接将特征空间里的欧几里德距离作为衡量的标准,这可以在一定程。这些点对应的质心的绝对位置及其邻居点的相对位置,然后对每个邻域的高维特征。经过自适应的邻域选择算法之后,点云中的每个点都对应了一个根据度量学习。如前文所提及的,由于点云数据所固有的稀疏性、无序性等特点,_点云配准从入门到精通pdf

渗透测试专业术语——防守篇_漏洞扫描系统英文缩写-程序员宅基地

文章浏览阅读811次。渗透测试专业术语——防守篇_漏洞扫描系统英文缩写

NeurIPS 2022 | 交叉聚合:基于Transformer的图像复原模型_transformer图像全局信息补充-程序员宅基地

文章浏览阅读1.2k次。提出了一个新的Transformer模型(Cross Aggregation Transformer,CAT)_transformer图像全局信息补充

Linux安装、配置、使用_linux apace2安装配置-程序员宅基地

文章浏览阅读459次。目录 1. Linux介绍2. VM和Linux的安装2.1 VMware安装2.2 安装Linux(centos)2.3 Vmware Workstation新建虚拟机3. Linux文件与目录结构4. VI/VIM编辑器4.1 VI/VIM编辑器是什么4.2 ..._linux apace2安装配置

随便推点

flowplayer-程序员宅基地

文章浏览阅读112次。Flowplayer支持播放flv、swf等流媒体以及图片文件,能够非常流畅的播放视频文件,支持自定义配置和扩展。1、加载flowplayer.js在要播放视频的页面的head之间加入flowplayer.js。<scripttype="text/javascript"src="js/flowplayer-3.2.6.min.js"></script..._flowplayer 指定播放视频中的某一段

Kibana对es的操作_kibana做es用户管理-程序员宅基地

文章浏览阅读59次。ElasticSearch入门之kibana对Elasticsearch做增删改查操作,以及一些聚合查询之作业实战 10ES(二):使用KIbana对ES做基本增删改查操作_kibana做es用户管理

OSGI and C++_osgi cancer-程序员宅基地

文章浏览阅读1.6k次。Updated on 10/04/2012: Poco OSP facts corrected (source: private mail with the developer)In September 2011 I attended the OSGi Community Event in Darmstadt and had the opportunity to shortly discu_osgi cancer

Unity图集打包-程序员宅基地

文章浏览阅读2.5k次。unity图集打包规则_图集打包

oracle 库存设置,oracle,EBS的库存数据视图-程序员宅基地

文章浏览阅读340次。表名:MTL_ONHAND_LOCATOR_V说明:库存数据视图列名 类型 含义INVENTORY_ITEM_ID NUMBER 项目内码ORGANIZATION_ID NUMBER 组织代码PADDED_CONCATENATED_SEGMENTS 物品编码REVISION VARCHAR2(3) 物品版本TOTAL QOH NUMBER 现有量SUBINVENTORY_CODE VARCHAR2..._ebs库存序列号控制

vue3 通过ref获取dom元素并修改style样式_vue3 ref 获取dom的style-程序员宅基地

文章浏览阅读1w次。// html <div class="ans-item" v-for="(item1,index1) in item.answer" :key="index1"> <div class="item"> <div class="circle" :ref="setItemRef">{{anslist[index1]}}</div> <div class="content">._vue3 ref 获取dom的style

推荐文章

热门文章

相关标签