Python 基础教程

Python 流程控制

Python 函数

Python 数据类型

Python 文件操作

Python 对象和类

Python 日期和时间

Python 高级知识

Python 参考手册

Python main() 函数

在本教程中,我们将学习如何使用Python程序的__name__属性在不同的上下文中动态运行它。

Python中的main()函数是什么?

一些编程语言有一个称为的特殊函数main(),它是程序文件的执行点。但是,Python解释器从文件顶部开始依次运行每一行,并且没有显式main()函数。

Python提供了其他约定来定义执行点。其中之一是使用python文件的main()函数和__name__属性。

Python中的__name__是什么?

__name__变量是一个特殊的内置Python变量,它显示当前模块的名称。

根据执行Python文件的位置,它具有不同的值。让我们来看一个实例。

作为脚本运行Python文件

假设我们有一个名为helloworld.py的Python文件,其内容如下:

print(__name__)

如果我们从命令行运行helloworld.py,则它将作为Python脚本运行。我们可以使用以下命令运行Python程序:

python helloworld.py
def foo():
    str="__main__"
    print(str);
if __name__=="__main__":
    foo()

当我们将程序作为脚本运行时,变量的值__name__设置为__main__。因此,以下程序的输出将是:

__main__

将Python文件作为模块运行

我们还可以将Python文件作为模块运行。为此,我们必须将此文件导入另一个Python程序。让我们来看一个实例。

假设我们在与heloworld.py文件相同的目录中有一个名为main.py的Python 文件。它具有以下内容:

import helloworld

运行此文件时,将具有以下输出:

helloworld

在这里,我们可以看到导入模块也会运行模块文件中的所有代码。

但是,我们可以看到,而不是显示 __main__,程序将显示模块的名称,即 helloworld

这是因为,在将Python文件作为模块运行的情况下,模块本身的名称已分配给__name__变量。

if条件与__name__一起使用

现在我们已经了解了__name__变量是如何分配值的,我们可以使用if条件子句在不同的上下文中,以不同的方式运行相同的Python文件。

让我们来看一个实例。

假设我们将helloworld.py文件的内容更改为以下内容:

def main():
    print("Hello World")

if __name__=="__main__":
    main()

现在,当我们通过命令行将其作为脚本运行时,输出将是:

Hello World

但是,当我们通过将其导入main.py文件将其作为模块运行时,由于main()未调用该函数,因此不会显示任何输出。

在这里,我们在helloworld.py文件中创建了一个自定义main()函数。它只在程序作为独立脚本而不是作为导入模块运行时执行。

这是在Python中显式定义main()函数的标准方法。 它是Python文件__name__变量的最流行用例之一。