浅析Python __name__ 是什么


Posted in Python onJuly 07, 2020

前言

在我们浏览一下 python 文件或者自己写 python 代码的时候,时常会在代码的最后加上这样的一行代码

if __name__ == '__main__':
 func_name()

那么这一行代码有什么具体的作用呢,不加的话会对我们的结果造成影响吗?

__name__

首先对于用双下划线开头且结尾的变量,在 Python 中被称为内置变量,除了 __name__,我们常见的还有 __init____dict__ 等等.那么有多少内置变量呢?我们可以通过下面在交互界面输入下面的命令,查看 Python 全部内置变量和内置函数

>>> dir(__builtins__)

结果如下图:

浅析Python __name__ 是什么

不同情况下的 __name__ 的值

首先我们需要知道 __name__ 在不同情况下会有不同值,它的值取决于我们是如何执行脚本的.我们可以通过几个例子感受一下:

Example 0

# test.py
print(f'__name__ 在 test.py 值为 {__name__}')

然后直接执行一下代码

$ python test.py

然后看一下输出

$ python test.py 
__name__ 在 test.py 值为 __main__

在这个例子中,我们发现 __name__ 的值是 __main__

Example 1

在这个例子中,我们重新创建一个脚本 test1.py 然后我们在 test1.py 中调用 test.py

# test1.py
import test
print(f'__name__ 在 test1.py 值为 {__name__}')

接着执行一下 test1.py,再看一下输出

python test1.py 
__name__ 在 test.py 值为 test
__name__ 在 test1.py 值为 __main__

结果是不是很有意思?整个过程是什么样子的呢?简单的画了一个图

浅析Python __name__ 是什么

什么时候使用 __name__

有时候,我们用 Python 写了一个脚本,当我们既希望这个脚本可以单独运行,同样希望它可以在其他的脚本中发挥作用. 这个时候就需要考虑使用 __name__ 了. 这里通过改造上面 Example 1的例子来直观感受一下

修改一下 test.py 文件

# test.py
def hello(name):
 print(f'Hello,{name}')
if __name__ == '__main__':
 hello("test")

再修改一下 test1.py 文件

# test1.py
from test import hello
hello("test1")

然后让我们先尝试直接运行一下 test.py,很显然这个时候, if 语句条件满足,会输出 Hello,test

$ python test.py 
Hello,test

这个时候我们如果运行 test1.py,程序就会输出 Hello,test1 了

$ python test1.py 
Hello,test1

如果我们把 if __name__ == "__main__"test.py 去掉会发生什么呢?

$ python test1.py 
Hello,test
Hello,test1

参考

What does if name == “main”: do?

What's in a (Python's) name?

到此这篇关于Python __name__ 是什么的文章就介绍到这了,更多相关Python __name__ 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python学习笔记(二)基础语法
Jun 06 Python
Python批量重命名同一文件夹下文件的方法
May 25 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
python编程嵌套函数实例代码
Feb 11 Python
python 按不同维度求和,最值,均值的实例
Jun 28 Python
Selenium chrome配置代理Python版的方法
Nov 29 Python
解决Python Matplotlib绘图数据点位置错乱问题
May 16 Python
python中setuptools的作用是什么
Jun 19 Python
Python如何读写CSV文件
Aug 13 Python
如何利用python发送邮件
Sep 26 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
python+pytest接口自动化之token关联登录的实现
Apr 06 Python
Pytorch上下采样函数--interpolate用法
Jul 07 #Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 #Python
pytorch加载自己的图像数据集实例
Jul 07 #Python
keras实现VGG16 CIFAR10数据集方式
Jul 07 #Python
使用darknet框架的imagenet数据分类预训练操作
Jul 07 #Python
Python调用C语言程序方法解析
Jul 07 #Python
keras实现VGG16方式(预测一张图片)
Jul 07 #Python
You might like
中国第一家无线电行
2021/03/01 无线电
解析如何屏蔽php中的phpinfo()函数
2013/06/06 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
js 动态文字滚动的例子
2011/01/17 Javascript
基于jquery库的tab新形式使用
2012/11/16 Javascript
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
解析JavaScript中的不可见数据类型
2013/12/02 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
深入了解Node.js中的一些特性
2014/09/25 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
Python datetime包函数简单介绍
2019/08/28 Python
python爬虫用mongodb的理由
2020/07/28 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
办公文员的工作岗位职责
2013/11/12 职场文书
计算机专业推荐信范文
2013/11/20 职场文书
毕业生找工作推荐信
2013/11/21 职场文书
怎样写演讲稿
2014/01/04 职场文书
学生思想表现的评语
2014/01/30 职场文书
洗发露广告词
2014/03/14 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
廉政承诺书2015
2015/04/28 职场文书
创业计划书之家教中心
2019/09/25 职场文书
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python