浅析Python __name__ 是什么

 更新时间:2020年07月07日 14:16:44   作者:Leetao  
这篇文章主要介绍了Python __name__ 是什么,本文通过实例代码给大家介绍了Python __name__ 的作用,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前言

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

if __name__ == '__main__':
 func_name() 

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

__name__

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

>>> dir(__builtins__)

结果如下图:

不同情况下的 __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__

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

什么时候使用 __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 Panda中索引和选择 series 的数据

    Python Panda中索引和选择 series 的数据

    这篇文章主要介绍了Python Panda中索引和选择series的数据,文章通过围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Python中hashlib模块的摘要算法详解

    Python中hashlib模块的摘要算法详解

    这篇文章主要介绍了Python中hashlib模块的摘要算法详解,摘要算法又称哈希算法、散列算法,它通过一个函数,把任意长度的数据转换为一个长度固定的数据串,通常用16进制的字符串表示,需要的朋友可以参考下
    2023-08-08
  • Python3结合Dlib实现人脸识别和剪切

    Python3结合Dlib实现人脸识别和剪切

    本篇文章给大家详细分析了Python3结合Dlib实现人脸识别和剪切这个技术,对此有兴趣的朋友参考学习下。
    2018-01-01
  • python网络爬虫基于selenium爬取斗鱼直播信息

    python网络爬虫基于selenium爬取斗鱼直播信息

    目前是直播行业的一个爆发期,由于国家对直播行业进行整顿和规范,现在整个直播行业也在稳固发展。随着互联网和网络直播市场的快速发展,相信未来还有广阔的发展前景。今天用selenium爬取一下斗鱼直播信息将代码分享给大家
    2022-03-03
  • Python教程pandas数据分析去重复值

    Python教程pandas数据分析去重复值

    Pandas指定行进行去重更新值,加载数据sample抽样函数,指定需要更新的值append直接添加append函数用法,根据某一列key值进行去重key唯一
    2021-09-09
  • python之matplotlib矢量图svg emf

    python之matplotlib矢量图svg emf

    这篇文章主要介绍了python之matplotlib矢量图svg emf,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Python通过调用mysql存储过程实现更新数据功能示例

    Python通过调用mysql存储过程实现更新数据功能示例

    这篇文章主要介绍了Python通过调用mysql存储过程实现更新数据功能,结合实例形式分析了Python调用mysql存储过程实现更新数据的具体步骤与相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • Python随机生成均匀分布在三角形内或者任意多边形内的点

    Python随机生成均匀分布在三角形内或者任意多边形内的点

    这篇文章主要为大家详细介绍了Python随机生成均匀分布在三角形内或者任意多边形内的点,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Python+Pygame实现之走四棋儿游戏的实现

    Python+Pygame实现之走四棋儿游戏的实现

    大家以前应该都听说过一个游戏:叫做走四棋儿。直接在家里的水泥地上用烧完的炭火灰画出几条线,摆上几颗石头子即可。当时的火爆程度可谓是达到了一个新的高度。本文将利用Pygame实现这一游戏,需要的可以参考一下
    2022-07-07
  • wxPython实现文本框基础组件

    wxPython实现文本框基础组件

    这篇文章主要介绍了wxPython实现文本框基础组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11

最新评论