Python 如何判断当前文件是否被作为主模块运行(main)

8次阅读

最标准方法是检查 name == “__main__”,因为直接运行时该变量值为”__main__”,导入时为模块名;常用于保护入口代码,需用==而非is,且须置于顶层。

Python 如何判断当前文件是否被作为主模块运行(main)

python 中判断当前文件是否被作为主模块运行,最常用、最标准的方法是检查内置变量 __name__ 的值是否等于字符串 "__main__"

为什么__name__ == "__main__"

每个 Python 模块都有一个内置属性 __name__。当该模块被直接执行(例如通过 python script.py)时,Python 会将其设为 "__main__";而当它被其他模块通过 import 导入时,__name__ 就是模块的文件名(不含 .py),比如 "utils""my_package.module"

典型写法:保护入口代码

这种判断常用于包裹测试代码、命令行逻辑或调试内容,确保它们只在直接运行脚本时执行,而不会在被导入时意外触发:

def main():     print("程序开始运行")  if __name__ == "__main__":     main()

常见误判场景与注意事项

  • 不要写成 __name__ is "__main__":字符串比较必须用 ==,因为 is 比较的是对象身份,不可靠。
  • 注意缩进和位置:该判断应放在模块顶层(不缩进),且通常靠近文件末尾,避免被前面的语法错误阻断。
  • ide 运行方式可能影响结果:某些 IDE(如 pycharm)默认以 -m 方式运行,或启用工作目录/环境配置,但只要不是显式 import__name__ 仍为 "__main__"
  • 包内 __main__.py:若想让整个包支持 python -m mypackage,需在包目录下添加 __main__.py,其内部同样用 if __name__ == "__main__": 控制逻辑。

text=ZqhQzanResources