问题:为什么要用main方法封装主逻辑呢,详情如下?
原思路:
# 不佳的实践
if __name__ == '__main__':
# 主要的代码逻辑
pass
新思路:
# 更好的实践
def main():
# 主要的代码逻辑
pass
if __name__ == '__main__':
main()
原理:
将代码逻辑封装在 main() 函数中,而不是直接放在 if name == ‘main’: 块中,主要有以下几个原因:
-
结构清晰:使用 main() 函数可以提供一个清晰的程序入口点。这使得其他阅读代码的人能够快速定位程序的开始部分。
-
重用性:将逻辑放在函数中允许其他脚本通过导入来重用这些逻辑。如果你直接将代码放在 if name == ‘main’: 块中,那么这部分代码在被其他脚本导入时不会执行,也无法被重用。
-
可维护性和可测试性:从 main() 函数调用代码使得它更容易被测试,因为你可以从测试框架中直接调用 main() 函数。此外,如果程序变得更加复杂,使用 main() 函数可以更容易地维护和扩展代码。
-
性能优化:在某些情况下,将代码放入函数中可以提高性能。Python 编译器会将函数中的局部变量优化存储,访问局部变量比访问全局变量速度要快。
-
避免全局变量:在 main() 函数内声明的变量是局部的,避免了全局变量的使用,这减少了由于变量命名冲突或无意中改变了全局状态所引起的bug。
-
模块化:当程序变得越来越大时,模块化会变得越来越重要。函数提供了一种自然的方式来封装功能,使得程序的各个部分更加模块化。