Python关于__name__属性的含义和作用详解


Posted in Python onFebruary 19, 2020

Python中的模块(.py文件)在创建之初会自动加载一些内建变量,__name__就是其中之一。Python模块中通常会定义很多变量和函数,这些变量和函数相当于模块中的一个功能,模块被导入到别的文件中,可以调用这些变量和函数。那么这时 __name__ 的作用就彰显了,它可以标识模块的名字,可以显示一个模块的某功能被自己执行还是被别的文件调用执行,假设模块A、B,模块A自己定义了功能C,模块B调用模块A,现在功能C被执行了:

如果C被A自己执行,也就是说模块执行了自己定义的功能,那么 __name__=='__main__'

如果C被B调用执行,也就是说当前模块调用执行了别的模块的功能,那么__name__=='A'(被调用模块的名字)

其实换一种说法也就是表示当前程序运行在哪一个模块中

下面举例说明:

首先自定义模块Student,在模块中定义功能Differ()

Python关于__name__属性的含义和作用详解

然后先自身执行,结果如下, __name__=='__main__'

Python关于__name__属性的含义和作用详解 

然后B调用执行,结果 __name__=='Student'

Python关于__name__属性的含义和作用详解 

Python关于__name__属性的含义和作用详解 

上面出两次结果,是因为python中导入模块会先将文件执行一遍,如下图Python关于__name__属性的含义和作用详解

到这儿可能有人已经注意到,上面的 __main__ 在python中作可以为函数的入口,而实际工程常用 if __name__=='__main__'来表示整个工程开始运行的入口。此外你如果不想让功能的某部分被别的模块调用执行,比如我自定的模块Student里的‘我的密码是xxx',只有自己执行才可以打印密码。所有你可以把部分写在if语句里,只有__name__=='__main__'的时候才能执行。这个可以这么理解,在if语句之外代码是最外层的,有点“全局变量”的意思,放入if里面就成了私有的了。

知识点扩充

1.__name__

__name__ 是属于 python 中的内置类属性,就是它会天生就存在与一个 python 程序中,代表对应程序名称。

也分两种情况:

1)当python程序自己执行时,__name__变量的值就是:__main__

2) 当python程序是作为模块被导入时,那么__name__变量的值就是:程序的文件名,也就是.py前面的文件名称。

2.使用场景

一般我们说使用场景,肯定会根据该知识点的功能来判断。

情况一:比如有个功能模块的程序test.py,在该程序里面有一部分是测试代码,测试代码块会输出内容,验证该程序是否能完成我们需求的功能。

但是我们在实际导入该模块时,不需要输出测试内容。因此可以用if语句判断__name__的值,进而限制测试代码是否执行。

以上就是三水点靠木结合多篇整理的相关内容,感谢大家的支持。

Python 相关文章推荐
用Python写的图片蜘蛛人代码
Aug 27 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
Mar 20 Python
python中的set实现不重复的排序原理
Jan 24 Python
PyQt4实现下拉菜单可供选择并打印出来
Apr 20 Python
python批量替换多文件字符串问题详解
Apr 22 Python
python和opencv实现抠图
Jul 18 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
python for和else语句趣谈
Jul 02 Python
基于Python解密仿射密码
Oct 21 Python
小 200 行 Python 代码制作一个换脸程序
May 12 Python
python seaborn heatmap可视化相关性矩阵实例
Jun 03 Python
Python中 range | np.arange | np.linspace三者的区别
Mar 22 Python
opencv+python实现均值滤波
Feb 19 #Python
python手写均值滤波
Feb 19 #Python
pytorch实现CNN卷积神经网络
Feb 19 #Python
python+opencv3生成一个自定义纯色图教程
Feb 19 #Python
Python 实现Image和Ndarray互相转换
Feb 19 #Python
python3+opencv生成不规则黑白mask实例
Feb 19 #Python
使用celery和Django处理异步任务的流程分析
Feb 19 #Python
You might like
一个高ai的分页函数和一个url函数
2006/10/09 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
PHP时间类完整代码实例
2021/02/26 PHP
Div自动滚动到末尾的代码
2008/10/26 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
AngularJS单选框及多选框实现双向动态绑定
2016/01/13 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
[38:23]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第二场 11.01
2020/11/02 DOTA
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
在Django中创建第一个静态视图
2015/07/15 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
海滩咖啡馆:Beach Cafe
2018/02/02 全球购物
市场营销专业毕业生自荐信
2013/11/02 职场文书
技术总监个人的自我评价范文
2013/12/18 职场文书
《王二小》教学反思
2014/02/27 职场文书
综治维稳工作汇报
2014/10/27 职场文书
社区母亲节活动总结
2015/02/10 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
dubbo服务整合zipkin详解
2021/07/26 Java/Android
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
Linux中如何安装并部署Redis
2022/04/18 Servers