python为什么叫python_浅析Python __name__ 是什么

本文详细介绍了Python中__name__变量的作用,特别是在脚本执行时如何判断是否为主程序。通过实例展示了当脚本被直接运行或导入时,__name__的值变化,并解释了在脚本中使用if __name__ == '__main__':的作用,以及何时需要使用该条件判断。文章还提供了一个例子,说明了移除该条件可能导致的输出差异。
摘要由CSDN通过智能技术生成

前言

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

1

2

if __name__== '__main__':

func_name()

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

__name__

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

>>> dir(__builtins__)

结果如下图:

1-200FQ00008.jpg

不同情况下的 __name__ 的值

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

Example 0

1

2

# test.py

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

然后直接执行一下代码

1

$ python test.py

然后看一下输出

1

2

$ python test.py

__name__ 在 test.py 值为 __main__

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

Example 1

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

1

2

3

# test1.py

import test

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

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

1

2

3

python test1.py

__name__ 在 test.py 值为 test

__name__ 在 test1.py 值为 __main__

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

1-200FQ00009.png

什么时候使用 __name__

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

修改一下 test.py 文件

1

2

3

4

5

# test.py

def hello(name):

print(f'Hello,{name}')

if __name__== '__main__':

hello("test")

再修改一下 test1.py 文件

1

2

3

# test1.py

from testimport hello

hello("test1")

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

1

2

$ python test.py

Hello,test

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

1

2

$ python test1.py

Hello,test1

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

1

2

3

$ python test1.py

Hello,test

Hello,test1

参考

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

原文链接:https://www.cnblogs.com/leetao94/p/13259043.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值