浅析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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
python正则表达式re模块详细介绍
May 29 Python
Python获取电脑硬件信息及状态的实现方法
Aug 29 Python
Python多线程结合队列下载百度音乐的方法
Jul 27 Python
Python使用sftp实现上传和下载功能(实例代码)
Mar 14 Python
python下的opencv画矩形和文字注释的实现方法
Jul 09 Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 Python
pygame实现弹球游戏
Apr 14 Python
Python获取浏览器窗口句柄过程解析
Jul 25 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
Nov 18 Python
详解使用python爬取抖音app视频(appium可以操控手机)
Jan 26 Python
Python下opencv使用hough变换检测直线与圆
Jun 18 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/03 咖啡文化
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
不错的PHP学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
JavaScript注入漏洞的原理及防范(详解)
2016/12/04 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
python打包生成so文件的实现
2020/10/30 Python
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
Java如何读取CLOB字段
2013/10/10 面试题
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
项目经理任命书内容
2014/06/06 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
2014办公室年度工作总结
2014/12/09 职场文书
销售辞职信范文
2015/03/02 职场文书
交通事故案件代理词
2015/05/23 职场文书
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android