在Python中的__name__
Python的 __name__
特殊变量存储着当前运行的Python脚本或模块的名称。Python的 __name__
变量是在Python 3.0中添加的,在Python 2.x中不存在。当一个Python脚本或模块正在执行时, __name__
变量被赋予__main__
的值 。
__name__
是什么意思
Python有一个名为 __name__
的内建变量,记录着当前正在运行的模块或脚本的名称。除非当前模块正在 执行 ,否则 __name__
变量只是保存着模块或脚本的名称 ,在这种情况下,它的值被设置为 __main__
。
因此,如果一个 Python脚本 被导入到另一个Python脚本中时,当该Python脚本运行时,它的 __name__
变量总是有值__main__
。否则,它将有 模块的名称 。
示例:
为了进一步理解,我们使用一个示例。创建一个名为testing.py的Python脚本,并将以下代码添加到其中:
# Code to define a function
def anything():
print('Value of the __name__ : ', __name__)
anything()
输出:
Value of the __name__ : __main__
解释:
当我们运行test.py脚本时, __name__
变量的值被设置为 __main__
。
现在让我们构建另一个名为 mains.py 的Python脚本,将之前的脚本导入其中。
示例:
# importing testing.py
import testing
testing.anything()
输出:
Value of the __name__ : testing
说明:
因为我们显示了 testing.py 模块的 __name__
变量的值,通过上面的代码输出,我们可以看到该变量的值是 testing。
使用条件 if __name__ == '__main__'
:
我们使用 if 语句和条件 __name__ == '__main__'
来声明某些 Python 代码只有在脚本直接运行时才会执行。
示例:
# importing testing.py
import testing
if __name__ == __main__:
testing.anything()
在这里,字符串 __main__
用于确定当前模块或脚本是否独立执行。在 __name__
变量 的名称两侧的双下划线表示它是一个 保留或特殊关键字。
name在Python中的代码示例
如前所述,当我们运行一个代码文件时, __name__
变量 的值会变为 __main__
,因为代码是 直接执行 的,甚至没有被导入到另一个文件中。
代码: 这是一个 ScriptP1.py 的代码文件。
# defining a function
def anything():
print('It is a function in the ScriptP1.')
if __name__=='__main__':
anything()
print('Called from the ScriptP1.')
else:
print('ScriptP1 is imported into another file.')
输出:
It is a function in the ScriptP1.
Called from the ScriptP1.
现在让我们创建一个名为 ScriptP2.py 的新的 Python 脚本文件,并将 ScriptP1.py 导入其中,尝试调用在 ScriptP1 中定义的 anything() 函数。
代码: ScriptP2.py 的代码如下:
import ScriptP1
if __name__=='__main__':
ScriptP1.anything()
print('Called from the ScriptP2.')
输出:
ScriptP1 is imported into another file.
It is a function in the ScriptP1.
Called from the ScriptP2.
在运行导入语句时, ScriptP2 中的 __name__
变量的值为 ScriptP1 (模块的名称),但是由于 ScriptP2 是第一个被执行的脚本,它现在的值将变为 __main__
。
打印 __name__
的值
让我们在每个执行阶段打印 __name__
变量的值,以帮助您更好地理解。
示例: 下面是 ScriptP1.py Python 脚本的源代码:
print('Value or the variable __name__ : ' + __name__)
输出:
Value or the variable __name__ : __main__
示例2: 这里是脚本 ScriptP2.py 的源代码:
# importing the file ScriptP1.py
import ScriptP1
print('Value or the variable __name__ : ' + __name__)
结果:
Value or the variable __name__ : __main__
总结
在大多数编程语言中,主要的方法或函数通常被用作程序的执行点。那么Python呢?一个Python程序(脚本)通常从第一行开始执行,即缩进级别为0的那一行。然而,在执行Python程序之前,会生成一个__name__
变量。在Python中,这个变量可以用来替代主函数。