Python main() 函数详解:入口点机制、__name__ 守卫与模块复用最佳实践
什么是 Python 主函数?
主函数标记程序入口点。脚本直接执行时,解释器顺序运行代码。def main() 内代码仅在脚本作为主模块运行时执行,被导入时不执行。
通过清晰示例演示。
示例 1:定义 main()
def main():
print("Hello World!")
print("Guru99")
直接运行此文件仅打印 Guru99。Hello World! 留在 main() 内未被调用。
要在脚本作为主程序运行时执行 main(),必须加守卫:
if __name__ == "__main__":
main()
现在脚本行为符合预期。
示例 2:正确守卫
def main():
print("Hello World!")
if __name__ == "__main__":
main()
print("Guru99")
运行文件控制台显示:Hello World!Guru99
原理:解释器直接执行文件时将特殊变量 __name__ 设为 "__main__"。守卫检查该条件再调用 main()。
__name__ 与模块的角色
理解 __name__ 对编写可复用代码至关重要。
def main():
print("hello world!")
if __name__ == "__main__":
main()
print("Guru99")
print("内置变量 __name__ 值:", __name__)
直接运行文件打印两条消息且 __name__ 为 "__main__"。若作为模块导入:
import mainfunction
print("done")
仅见 done 且 __name__ 为模块名,main() 不自动执行。
简言之:
- 直接运行:
__name__ == "__main__"→main()执行。 - 作为模块导入:
__name__ != "__main__"→main()跳过。
Python 3 简单脚本不强制要求 if __name__ == "__main__":,但作为最佳实践推荐使用,尤其是文件可能被复用时。Python 2 语法相同但 print 语句不同:
def main():
print "Hello World!"
if __name__ == "__main__":
main()
print "Guru99"
Python 3 也可写成:
def main():
print("Hello World!")
main()
print("Guru99")
注意:def main(): 后保持正确缩进以避免错误。
Python
- Python Lambda匿名函数实战指南
- Python 生成器:高效迭代与进阶用例
- Python 闭包详解:嵌套函数如何捕获变量
- 精通 Python 装饰器:专家技巧增强函数
- Python strip() 方法完全指南:去除首尾空白与自定义字符实战
- Python len() 函数实战指南:测量字符串、列表、元组、字典等对象长度
- Python 字符串 find() 方法完全指南:语法、参数、替代方案与计数技巧
- 精通 Python Lambda 函数:实用示例与最佳实践
- Python round() 函数详解与实战示例
- 精通 Python map() 函数:语法、示例与最佳实践
- 精通 Python yield:生成器 vs return 实战指南
- Python collections.Counter:高效计数、更新与算术运算