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实现2014火车票查询代码分享
Jan 10 Python
决策树的python实现方法
Nov 18 Python
python集合类型用法分析
Apr 08 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
Python 类的特殊成员解析
Jun 20 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
Aug 18 Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
Nov 28 Python
Python中的面向接口编程示例详解
Jan 17 Python
python实现图片批量压缩
Apr 24 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学习 字符串课件
2008/06/15 PHP
PHP数据类型的总结分析
2013/06/13 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
js检查页面上有无重复id的实现代码
2013/07/17 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
python函数局部变量用法实例分析
2015/08/04 Python
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
Python进程间通信Queue实例解析
2018/01/25 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
巴西男士个人护理产品商店:SHOP4MEN
2017/08/07 全球购物
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
程序员机试试题汇总
2012/03/07 面试题
学生档案自我鉴定
2013/10/07 职场文书
银行柜员求职自荐书
2014/06/18 职场文书
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
MySQL事务操作的四大特性以及并发事务问题
2022/04/12 MySQL
介绍一下28个JS常用数组方法
2022/05/06 Javascript