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线程的两种编程方式
Apr 14 Python
Python针对给定列表中元素进行翻转操作的方法分析
Apr 27 Python
Python实现性能自动化测试竟然如此简单
Jul 30 Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
Dec 10 Python
python飞机大战 pygame游戏创建快速入门详解
Dec 17 Python
python实现滑雪者小游戏
Feb 22 Python
详解python polyscope库的安装和例程
Nov 13 Python
python wsgiref源码解析
Feb 06 Python
pandas中DataFrame数据合并连接(merge、join、concat)
May 30 Python
python非标准时间的转换
Jul 25 Python
python 离散点图画法的实现
Apr 01 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 Coding Tips(php小技巧)[2011/04/02最后更新]
2011/05/02 PHP
php连接数据库代码应用分析
2011/05/29 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
codeigniter框架批量插入数据
2014/01/09 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
详解php实现页面静态化原理
2017/06/21 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
Python re模块介绍
2014/11/30 Python
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
Python数据类型学习笔记
2016/01/13 Python
基于Python 的进程管理工具supervisor使用指南
2016/09/18 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
python 文本单词提取和词频统计的实例
2018/12/22 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
python字典改变value值方法总结
2019/06/21 Python
Python跳出多重循环的方法示例
2019/07/03 Python
Python3 A*寻路算法实现方式
2019/12/24 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
同步和异步有何异同,在什么情况下分别使用他们?举例说明
2014/02/27 面试题
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
大学生最常用的自我评价
2013/12/07 职场文书
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
感恩节红领巾广播稿
2014/02/11 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
卖房授权委托书样本
2014/10/05 职场文书
先进班组事迹材料
2014/12/25 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python