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 回调函数和回调方法的实现分析
Mar 23 Python
python Django批量导入不重复数据
Mar 25 Python
Windows下安装python2和python3多版本教程
Mar 30 Python
Python实现的密码强度检测器示例
Aug 23 Python
Python 绘图库 Matplotlib 入门教程
Apr 19 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
Python使用re模块验证危险字符
May 21 Python
python多线程semaphore实现线程数控制的示例
Aug 10 Python
Python 列表推导式需要注意的地方
Oct 23 Python
10个python爬虫入门实例(小结)
Nov 01 Python
python opencv人脸识别考勤系统的完整源码
Apr 26 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自动加载的两种实现方法
2010/06/21 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
javascript 面向对象继承
2009/11/26 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
浅析js绑定事件的常用方法
2016/05/15 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
CountUp.js数字滚动插件使用方法详解
2019/10/17 Javascript
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
python tkinter基本属性详解
2019/09/16 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
高一历史教学反思
2014/01/13 职场文书
韩国商务邀请函
2014/01/14 职场文书
退休感言
2014/01/28 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
音乐节策划方案
2014/06/09 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书