__main__ Python · 常用约定
`__main__` 是一个特殊的字符串,当 Python 文件被直接运行时,模块的 `__name__` 变量会被设置为 `'__main__'`。就像当你住进一个无主的房子,就算上面不写,这里也会被默认成为你家。它常用来判断“这个文件是被直接运行,还是被其他文件导入”。
怎么用
在代码中写 `if __name__ == "__main__":`,如果成立,说明该文件被直接运行。
小例子
# 文件:脚本.py
def 主函数():
print("我是主程序")
if __name__ == "__main__":
主函数()
运行结果
我是主程序
对比:如果文件被其他文件导入,`__name__` 不等于 `'__main__'`
# 另一个文件导入脚本.py import 脚本 # 此时 脚本.__name__ 为 '脚本',不等于 '__main__',所以不会自动执行主函数 这样可以让代码在被导入时不执行某些部分,只有直接运行才执行。
常见使用场景
1. 写脚本时,把测试代码放在 `if __name__ == "__main__":` 里:
def 加法(a, b):
return a + b
if __name__ == "__main__":
print(加法(1, 2)) # 直接运行才测试
2. 模块既可以被导入使用,也可以作为命令行工具运行:
# 文件:计算器.py
def 减法(a, b):
return a - b
if __name__ == "__main__":
import sys
print(减法(int(sys.argv[1]), int(sys.argv[2])))
提醒:- `__main__` 不是关键字,只是一个普通字符串,但约定俗成。 - 如果文件被导入,`__name__` 会是模块名,而不是 `'__main__'`。 - 这种写法非常常见,几乎所有 Python 脚本都会用到。
在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← Python全部词条