我应该如何组织Python源代码?
我刚开始学习Python(是时候试试了),想了解一些最佳实践。
我的第一个项目是一个队列,用来在多个线程中运行命令行实验。现在我的 main.py
文件变得很长,我想把它拆分开来。总的来说,我想知道:Python程序员是怎么组织多个源文件的? 有没有什么特别的结构对你们有效?
我具体想问的问题包括:
- 每个类应该放在一个单独的文件里吗?
- 我应该怎么安排单元测试和源代码的关系?
- 文档注释应该放在哪里,特别是关于命令行操作的注释?
- 如果我使用多个目录,怎么在它们之间导入类?
我可能可以通过反复试验得出一些结论,但我更希望能从一些好的方法开始。
2 个回答
8
你应该像对待任何面向对象的编程语言一样来组织你的代码和测试。
下面是我个人的做法,可能不一定正确,但对我来说有效。
- 这取决于你的功能是如何划分的。对于我的主要Python应用,我有一个文件,其中包含入口点的类,然后是不同功能的包。
- 我使用Eclipse中的PyDev,组织方式和Java一样。
> Workspace > | > |-Src > | |-Package1 > | |-Package2 > | |-main.py > |-Test > |-TestPackage1 > |-TestPackage2
- 到处都使用DocString,这样可以跟踪所有内容。
- 确保相关的
__init__.py
文件在文件夹中后,就可以简单地使用from module import class
来导入了。
35
Eric提到的那篇文章非常棒,因为它详细讲解了如何组织大型的Python代码。
如果你是从谷歌过来的,想知道怎么把一个大文件拆分成多个更容易管理的小文件,我来简单总结一下这个过程。
假设你现在所有的代码都在一个叫做main.py
的文件里:
- 在同一个文件夹里创建另一个源文件(我们这次叫它
utils.py
) - 把你需要的类、函数、语句等从
main.py
移动到utils.py
里 - 在
main.py
的最上面加一行:import utils
从概念上讲,这样做就是在另一个文件里创建了一个叫utils
的新模块。然后你可以在需要的地方导入它。