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.pyScript1.py ,脚本名称的更改不会影响功能。

大多数编程语言使用主方法或函数作为任何程序的执行起点。但是 Python 呢?一般来说,python 程序(脚本)的执行从第一行开始,该行位于该程序的缩进级别 0 处。然而,当一个 python 程序被执行时,在其执行之前会创建一个__name__变量。这个变量可以作为 python 中方法的替代。