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列表与元组详解实例
Nov 01 Python
Python实现给文件添加内容及得到文件信息的方法
May 28 Python
Python序列化基础知识(json/pickle)
Oct 19 Python
Python OOP类中的几种函数或方法总结
Feb 22 Python
Django 中间键和上下文处理器的使用
Mar 17 Python
django ModelForm修改显示缩略图 imagefield类型的实例
Jul 28 Python
pytorch 预训练层的使用方法
Aug 20 Python
python实现微信小程序用户登录、模板推送
Aug 28 Python
python 读写文件包含多种编码格式的解决方式
Dec 20 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
flask 实现上传图片并缩放作为头像的例子
Jan 09 Python
Python模拟伯努利试验和二项分布代码实例
May 27 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
PHP4实际应用经验篇(4)
2006/10/09 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
使用PHP生成PDF方法详解
2015/01/23 PHP
jQuery技巧总结
2011/01/01 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
简单实现js倒计时功能
2017/02/13 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
MVVM框架下实现分页功能示例
2018/06/14 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
js实现随机数小游戏
2019/06/28 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python写的服务监控程序实例
2015/01/31 Python
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
python实现排序算法解析
2018/09/08 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
python实现人脸签到系统
2020/04/13 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
Monki官网:斯堪的纳维亚的独立时尚品牌
2020/11/09 全球购物
建筑专业自我鉴定
2013/10/22 职场文书
万年牢教学反思
2014/02/15 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
推广普通话标语
2014/06/27 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
红色故事汇观后感
2015/06/18 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书