Python __name__
变量
原文:https://www.studytonight.com/python/_name_-as-main-method-in-python
Python __name__
是一个特殊的变量,其中存储了当前正在执行的 Python 脚本/模块的名称。
Python __name__
变量是 Python 2.x 版本中没有的,是在 Python 3.0 版本中引入的。
在 python 中,当前 python 脚本或模块执行时,__name__
变量被赋予值 main 。
什么是__name__
?
__name__
是 python 中的内置变量,存储当前正在执行的模块/脚本的名称。如果当前模块正在执行,则__name__
变量被赋予值 main ,否则它只包含模块或脚本的名称。
因此,当 python 脚本正在执行时,其__name__
变量将始终具有值 main ,如果该 python 文件被导入到任何其他 python 脚本中,则__name__
变量将具有模块的名称。
我们举个例子来了解一下。创建一个名为 test.py 的 python 脚本,并在其中添加以下代码:
# defining a function
def something():
print('Value of __name__:', __name__)
something()
name 的值:main
当我们执行 test.py 脚本时,__name__
变量的值被设置为 main 。
现在,让我们创建另一个 python 脚本 main.py ,然后在其中导入上面的脚本。
# importing test.py
import test
test.something()
name 的值:测试
在上面的代码输出中可以看到,__name__
变量的值是 test ,因为我们打印了 test.py 模块的__name__
变量的值。
使用if __name__ == __main__
要在任何 python 脚本中指定一些只有在直接执行脚本时才应该执行的代码,我们可以使用带有条件__name__ == __main__
的if
语句
例如,
# importing test.py
import test
if __name__ == __main__:
test.something()
这里 main 只是一个字符串,用于检查当前模块/脚本是否独立运行。在__name__
变量中,名称两侧的双下划线用于指示 python 解释器将其识别为特殊/保留关键字。
Python __name__
:代码示例
如上所述,当我们执行一个代码文件时,对于该代码片段,__name__
变量的值变为 main ,因为代码是直接执行的,而没有被导入到任何其他文件中。
例如:这里有一个代码文件 Script1.py ,
# defining a function
def something():
print('This function is in Script1.')
if __name__=='__main__':
something()
print('Called from Script1.')
else:
print('Script1 is imported in some other file.')
当我们运行 python Script1.py 时,那么:
这个函数在 Script1 中。从脚本 1 调用。
现在,让我们创建另一个名为 Script2.py 的 python 脚本文件,并将脚本 Script1.py 导入其中,并尝试调用脚本 Script1 中定义的函数something()
。
以下是脚本 2.py 的代码:
import Script1
if __name__=='__main__':
Script1.something()
print('Called from Script2.')
现在我们运行 python 脚本 2.py 然后:
Script1 被导入到其他文件中。这个函数在 Script1 中。从脚本 2 调用。
当import
语句在脚本 2 中为脚本 1 执行时,在此期间__name__
变量的值为脚本 1 (模块名称),但由于执行是从脚本脚本 2 开始的,因此其__name__
变量的值为 main 。
__name__
:打印它的价值
为了更好地理解,让我们在每个执行步骤打印__name__
变量的值。
下面是 python 脚本 Script1.py 的代码:
print('Value or __name__ variable: ' + __name__)
就这样,我们不会在脚本中包含任何其他内容。这是脚本的代码:
# import file Script1.py
import Script1
print('Value or __name__ variable: ' + __name__)
这里有一个活生生的例子:
注意:在实时示例中,脚本是 main.py 和 Script1.py ,脚本名称的更改不会影响功能。
大多数编程语言使用主方法或函数作为任何程序的执行起点。但是 Python 呢?一般来说,python 程序(脚本)的执行从第一行开始,该行位于该程序的缩进级别 0 处。然而,当一个 python 程序被执行时,在其执行之前会创建一个__name__
变量。这个变量可以作为 python 中主方法的替代。