我应该如何组织Python源代码?

108 投票
2 回答
43149 浏览
提问于 2025-04-15 16:42

我刚开始学习Python(是时候试试了),想了解一些最佳实践。

我的第一个项目是一个队列,用来在多个线程中运行命令行实验。现在我的 main.py 文件变得很长,我想把它拆分开来。总的来说,我想知道:Python程序员是怎么组织多个源文件的? 有没有什么特别的结构对你们有效?

我具体想问的问题包括:

  1. 每个类应该放在一个单独的文件里吗?
  2. 我应该怎么安排单元测试和源代码的关系?
  3. 文档注释应该放在哪里,特别是关于命令行操作的注释?
  4. 如果我使用多个目录,怎么在它们之间导入类?

我可能可以通过反复试验得出一些结论,但我更希望能从一些好的方法开始。

2 个回答

8

你应该像对待任何面向对象的编程语言一样来组织你的代码和测试。

下面是我个人的做法,可能不一定正确,但对我来说有效。

  1. 这取决于你的功能是如何划分的。对于我的主要Python应用,我有一个文件,其中包含入口点的类,然后是不同功能的包。
  2. 我使用Eclipse中的PyDev,组织方式和Java一样。
>  Workspace
>     |
>     |-Src
>     |   |-Package1
>     |   |-Package2
>     |   |-main.py
>     |-Test
>         |-TestPackage1
>         |-TestPackage2
  1. 到处都使用DocString,这样可以跟踪所有内容。
  2. 确保相关的__init__.py文件在文件夹中后,就可以简单地使用from module import class来导入了。
35

Eric提到的那篇文章非常棒,因为它详细讲解了如何组织大型的Python代码。

如果你是从谷歌过来的,想知道怎么把一个大文件拆分成多个更容易管理的小文件,我来简单总结一下这个过程。

假设你现在所有的代码都在一个叫做main.py的文件里:

  • 在同一个文件夹里创建另一个源文件(我们这次叫它utils.py
  • 把你需要的类、函数、语句等从main.py移动到utils.py
  • main.py的最上面加一行:import utils

从概念上讲,这样做就是在另一个文件里创建了一个叫utils的新模块。然后你可以在需要的地方导入它。

撰写回答