Python 主函数

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

一些编程语言有一个名为 main() 的特殊函数,它是程序文件的执行入口点。然而,Python 解释器会从文件的顶部开始依次执行每一行,没有显式的 main() 函数。

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


Python 中的 __name__ 是什么?

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

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


将 Python 文件作为脚本运行

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

print(__name__)

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

$ python helloworld.py

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

__main__

将 Python 文件作为模块运行

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

假设我们有一个名为 main.py 的 Python 文件,它与 heloworld.py 文件位于同一目录中。它包含以下内容

import helloworld

当我们运行此文件时,我们将得到以下输出

helloworld

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

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

这是因为,在将 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__ 变量最流行的用例之一。

另请阅读

视频:Python if __name__ == '__main__'

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战