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算术运算符实例详解
May 31 Python
Python字符串拼接六种方法介绍
Dec 18 Python
python 对key为时间的dict排序方法
Oct 17 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
Oct 10 Python
TensorFLow 不同大小图片的TFrecords存取实例
Jan 20 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
Feb 14 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
Apr 02 Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 Python
没编程基础可以学python吗
Jun 17 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
Sep 23 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
python如何利用cv2.rectangle()绘制矩形框
Dec 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出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
2019/04/12 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
js检测用户输入密码强度
2015/10/22 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
JSONP跨域请求
2017/03/02 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
2017/03/09 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
2017/05/22 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Python生成数字图片代码分享
2017/10/31 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
生物学学生自我评价
2014/01/17 职场文书
师范学院教师自荐书
2014/01/31 职场文书
学生吸烟检讨书
2014/09/14 职场文书
英语感谢信范文
2015/01/20 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
在 Python 中利用 Pool 进行多线程
2022/04/24 Python