103

我正在开始使用 Python(现在是我试一试的时候了),我正在寻找一些最佳实践。

我的第一个项目是在多个线程中运行命令行实验的队列。我开始得到一个很长的main.py文件,我想把它分解。一般来说,我在寻找:python程序员如何组织多个源文件?是否有适合您的特定结构?

我的具体问题包括:

  1. 每个类都应该在一个单独的文件中吗?
  2. 我应该如何组织与源代码相关的单元测试?
  3. 我应该把文档注释放在哪里,特别是那些用于命令行操作的注释?
  4. 如果我使用多个目录,如何在它们之间导入类?

我可能在这里通过反复试验得出一些自己的结论,但我宁愿从好的开始。

4

2 回答 2

33

Eric 指出的文章很棒,因为它涵盖了组织大型 Python 代码库的细节。

如果您从 Google 来到这里并试图了解如何将一个大型源文件拆分为多个更易于管理的文件,我将简要总结该过程。

假设您当前在一个名为的文件中拥有所有内容main.py

  • 在同一个文件夹中创建另一个源文件(让我们utils.py在这个例子中调用我们的源文件)
  • 将您需要的任何类、函数、语句等main.py移入utils.py
  • main.py顶部添加一行:import utils

从概念上讲,这样做是创建一个utils在另一个源文件中调用的新模块。然后,您可以在任何需要的地方导入它。

于 2012-03-27T11:23:33.040 回答
8

组织代码和测试的方式与任何 OO 语言完全相同。

从我做的方式答案。这可能不对,但对我有用

  1. 取决于您的功能如何拆分。对于我的主要 python 应用程序,我有 1 个文件,其中包含用于入口点的类,然后是不同功能位的包
  2. 我将 PyDev 用于 Eclipse 并像处理 Java 一样组织它。
>  Workspace
>     |
>     |-Src
>     |   |-Package1
>     |   |-Package2
>     |   |-main.py
>     |-Test
>         |-TestPackage1
>         |-TestPackage2
  1. 在任何地方使用 DocString 来跟踪所有内容
  2. 在确保相关__init__.py文件在文件夹中之后。它只是一个简单的案例from module import class
于 2009-12-04T20:22:52.507 回答