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中利用Into包整洁地进行数据迁移的教程
Mar 30 Python
Python通过90行代码搭建一个音乐搜索工具
Jul 29 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
Jul 02 Python
Python简单生成8位随机密码的方法
May 24 Python
最近Python有点火? 给你7个学习它的理由!
Jun 26 Python
tensorflow训练中出现nan问题的解决
Feb 10 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
Dec 19 Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 Python
Python tkinter实现简单加法计算器代码实例
May 13 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 Python
解决pytorch 损失函数中输入输出不匹配的问题
Jun 05 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
PHP怎样调用MSSQL的存储过程
2006/10/09 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
不同浏览器的怪癖小结
2010/07/11 Javascript
jquery prop的使用介绍及与attr的区别
2013/12/19 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
JavaScript中实现sprintf、printf函数
2015/01/27 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
3种vue路由传参的基本模式
2018/02/22 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
零基础写python爬虫之爬虫编写全记录
2014/11/06 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
美国专业级皮肤病和spa品质护肤品的高级零售网站:SkinCareRx
2017/02/06 全球购物
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
企业治理工作自我评价
2013/09/26 职场文书
学生会竞聘书范文
2014/03/31 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
公司放假通知范文
2015/04/14 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
2019各种保证书范文
2019/06/24 职场文书
导游词之西安大清真寺
2019/12/17 职场文书