Python中__name__变量具体指什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1217个文字,预计阅读时间需要5分钟。
前言:在我们浏览Python文件或自己编写Python代码的时候,经常会遇到这样的代码:
pythonif __name__=='__main__': func_name()
那么,这一行代码有什么具体的作用呢?
那么这一行代码具有以下具体的作用:
1. 判断是否为脚本执行:`__name__` 是Python中的一个内置变量,它表示当前模块的名称。当Python解释器执行一个模块时,会将该模块的名称赋值给 `__name__`。如果模块是作为脚本直接运行的,`__name__` 的值就是 `'__main__'`。
2. 防止代码重复执行:如果在一个模块中直接运行,那么 `__name__=='__main__'` 条件为真,会执行下面的代码块。如果该模块被导入到另一个模块中,`__name__` 的值不会是 `'__main__'`,因此下面的代码块不会执行,从而避免了代码重复执行。
3. 方便组织代码:将主程序放在 `if __name__=='__main__':` 代码块中,可以让模块更容易被其他模块导入和使用,而不需要担心主程序被意外执行。
4. 便于测试:在开发过程中,可以将测试代码放在 `if __name__=='__main__':` 代码块中,这样在将模块导入到其他模块进行测试时,测试代码不会被执行,从而避免测试代码对主程序的影响。
总之,这一行代码在Python编程中非常有用,它可以帮助我们更好地组织和管理代码。
前言
在我们浏览一下 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__ 内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!
本文共计1217个文字,预计阅读时间需要5分钟。
前言:在我们浏览Python文件或自己编写Python代码的时候,经常会遇到这样的代码:
pythonif __name__=='__main__': func_name()
那么,这一行代码有什么具体的作用呢?
那么这一行代码具有以下具体的作用:
1. 判断是否为脚本执行:`__name__` 是Python中的一个内置变量,它表示当前模块的名称。当Python解释器执行一个模块时,会将该模块的名称赋值给 `__name__`。如果模块是作为脚本直接运行的,`__name__` 的值就是 `'__main__'`。
2. 防止代码重复执行:如果在一个模块中直接运行,那么 `__name__=='__main__'` 条件为真,会执行下面的代码块。如果该模块被导入到另一个模块中,`__name__` 的值不会是 `'__main__'`,因此下面的代码块不会执行,从而避免了代码重复执行。
3. 方便组织代码:将主程序放在 `if __name__=='__main__':` 代码块中,可以让模块更容易被其他模块导入和使用,而不需要担心主程序被意外执行。
4. 便于测试:在开发过程中,可以将测试代码放在 `if __name__=='__main__':` 代码块中,这样在将模块导入到其他模块进行测试时,测试代码不会被执行,从而避免测试代码对主程序的影响。
总之,这一行代码在Python编程中非常有用,它可以帮助我们更好地组织和管理代码。
前言
在我们浏览一下 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__ 内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

