Python 中的 main 函数和 __name__ == "__main__" 的意义是什么?

18 投票
4 回答
6341 浏览
提问于 2025-04-15 17:19

我偶尔在Python脚本中看到类似下面的内容:

if __name__ == "__main__":
    # do stuff like call main()

这个有什么用呢?

4 个回答

7

这个的主要目的是,如果它在 main.py 文件里,其他文件可以通过 import main 来引入你“主”程序里的类和函数,但不会直接运行这个文件里的代码。

如果没有这个条件,当其他脚本导入这个文件时,文件里全局范围内的代码就会被执行。

8

这样做可以让一个Python脚本既可以被导入使用,也可以单独运行,方式很合理。

如果你直接运行一个Python文件,__name__这个变量的值会是__main__。但是如果你导入这个脚本,就不是这样了。通常情况下,当你导入一个脚本时,是为了调用里面的函数或者使用里面的类。

如果没有这个检查,任何不在类或函数里的代码在你导入的时候都会被执行。

27

把所有重要的Python代码放在一个函数里面(也就是说,不要放在模块的最上面)是一个很重要的性能优化方法,同时也是代码组织得当的关键。这是因为Python编译器能更好地优化函数里的局部变量,而不是模块里的全局变量,因为后者的处理更复杂。

当我们调用这个函数时,如果只在当前模块作为“主脚本”运行,而不是从其他模块导入,这样做可以让模块里的功能更容易被重用(因为其他模块可以导入它,然后调用相应的函数或类)。更重要的是,这样的做法支持良好的单元测试(在测试模块的功能之前,通常需要设置各种模拟和假数据,以便测试外部系统的交互)。

撰写回答