1. 正确的写法
正确的写法应该是:
if __name__ == "__main__":
main()
这里需要注意:
- 使用的是
==
(比较运算符),而不是=
(赋值运算符)。 __name__
是一个特殊的内置变量,当 Python 文件被直接运行时,__name__
的值为"__main__"
;而当文件被作为模块导入时,__name__
的值为模块的名称。
2. 作用
if __name__ == "__main__":
是 Python 中一个常见的模式,用于判断当前脚本是否被直接运行。如果是直接运行,那么代码块中的内容会被执行;如果是被其他模块导入,代码块中的内容则不会被执行。
这种模式通常用于以下场景:
- 将脚本设计为既可以独立运行,也可以作为模块被其他脚本导入。
- 防止在导入模块时执行某些代码。
3. 示例
假设你有一个文件 example.py
,内容如下:
def main():
print("Hello, World!")
if __name__ == "__main__":
main()
直接运行
如果你直接运行这个脚本:
python example.py
输出会是:
Hello, World!
作为模块导入
如果你在另一个脚本中导入 example.py
:
# another_script.py
import example
运行 another_script.py
时,example.py
中的 main()
函数不会被自动调用,因为 __name__
的值不再是 "__main__"
。
4. 为什么需要 if __name__ == "__main__":
如果没有这个检查,当 example.py
被导入时,main()
函数也会被调用,这可能不是你期望的行为,尤其是当 main()
函数包含一些只希望在独立运行时执行的代码(比如测试代码、初始化代码等)。
总结
- 使用
if __name__ == "__main__":
来区分脚本是被直接运行还是被导入。 - 使用
==
而不是=
,因为这是比较操作,而不是赋值操作。