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中模拟enum枚举类型的5种方法分享
Nov 22 Python
Python编程判断这天是这一年第几天的方法示例
Apr 18 Python
理论讲解python多进程并发编程
Feb 09 Python
Python实现的简单排列组合算法示例
Jul 04 Python
python字符串Intern机制详解
Jul 01 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
Jul 08 Python
使用python实现滑动验证码功能
Aug 05 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
Django Channel实时推送与聊天的示例代码
Apr 30 Python
python mongo 向数据中的数组类型新增数据操作
Dec 05 Python
python使用PySimpleGUI设置进度条及控件使用
Jun 10 Python
python库Tsmoothie模块数据平滑化异常点抓取
Jun 10 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 第一节 php简介
2012/04/28 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
Prototype使用指南之selector.js说明
2008/10/26 Javascript
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
利用Python实现颜色色值转换的小工具
2016/10/27 Python
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
Python递归函数特点及原理解析
2020/03/04 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
网络工程系信息安全技术专业大学生求职信
2013/10/22 职场文书
技校毕业生的自我评价
2013/12/27 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
招商银行工作证明
2015/06/17 职场文书
《我的长生果》教学反思
2016/02/20 职场文书
四年级作文之植物
2019/09/20 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书