在Python中,`__main__` 是一个特殊的名字,用于两个重要的构造:程序的顶级环境的名字,可以使用 `__name__ == '__main__'` 表达式来检查;以及Python包中的 `__main__.py` 文件²。
当Python解释器执行一个脚本时,它从文件的顶部开始执行,没有特定的函数会被Python自动执行。然而,为程序的执行定义一个起始点对于理解程序的工作方式是有用的。Python程序员已经提出了几个约定来定义这个起始点¹。
当Python模块或包被导入时,`__name__` 被设置为模块的名字。通常,这是Python文件本身的名字,不包括 `.py` 扩展名²。然而,如果模块在顶级代码环境中被执行,它的 `__name__` 被设置为字符串 `'__main__'`²。
因此,一个模块可以通过检查自己的 `__name__` 来发现它是否在顶级环境中运行,这允许一个常见的习语用于在模块不是从导入语句初始化时有条件地执行代码²:
```python
if __name__ == '__main__':
# 当模块不是从导入语句初始化时执行
...
```
希望这个答案对你有所帮助!
源: 与必应的对话, 2023/12/27
(1) __main__ — Top-level code environment — Python 3.12.1 documentation. https://docs.python.org/3/library/__main__.html.
(2) Defining Main Functions in Python – Real Python. https://realpython.com/python-main-function/.
(3) An Introduction to the main () Function in Python. https://python.plainenglish.io/what-is-if-name-main-in-python-7f599054847f.
(4) What does the if __name__ == “__main__”: do? - GeeksforGeeks. https://www.geeksforgeeks.org/what-does-the-if-__name__-__main__-do/.