我应该如何组织Python源代码?[关闭]


99

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

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

我的具体问题包括:

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

我可能会通过反复试验得出一些自己的结论,但是我宁愿从好的东西开始。


4
这说明两件事情有关的组织代码docs.python.org/tutorial/modules.html
尼古拉Smiljanić

2
这是python文档中一些更有用的信息。<br> docs.python.org/3/tutorial/modules.html#packages
rda3mon 2012年

11
这个问题是在Python社区中寻求广泛接受的约定。答案不是意见问题,尽管像大多数答案一样,答案可能会随着时间而改变。我建议将其重新打开,或者至少将原始答案取消删除。
Andres Jaan Tack 2014年

Answers:


32

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

如果您是从Google登陆到这里的,并试图找出如何将一个大型源文件拆分为多个,更易于管理的文件,那么我将简要概述该过程。

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

  • 在同一文件夹中创建另一个源文件(utils.py在此示例中,我们称为我们的文件)
  • 将所需的任何类,函数,语句等main.py移入utils.py
  • main.py顶部添加一行:import utils

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


您是否还记得Eric指向的文章?我似乎找不到关于此问题/答案的Eric
Daniel Rucci 2014年

7
@DanR,是的,这是文章。出于某种原因,主持人删除了他的答案,尽管它有56票赞成票。
Drew Noakes 2014年

1
@DrewNoakes:我认为它是作为仅链接的答案而删除的;只要他总结了文章的要点。
smci

1
不幸的是,这篇文章现在是一个死链接:-(.。最新的存档版本在这里:web.archive.org/web/20190714164001/http
Igor Brejc

7

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

我做这件事的答案。可能不对,但对我有用

  1. 取决于如何拆分功能。对于我的主要python应用程序,我有1个文件,其中包含用于入口点的类,然后包含功能不同的包
  2. 我使用PyDev进行蚀,并像使用Java一样组织它。
>  Workspace
>     |
>     |-Src
>     |   |-Package1
>     |   |-Package2
>     |   |-main.py
>     |-Test
>         |-TestPackage1
>         |-TestPackage2
  1. 随处使用DocString跟踪所有内容
  2. 确保相关__init__.py文件位于文件夹中之后。这只是一个简单的例子from module import class

5
需要注意的是:java与包,文件和类之间存在一种独断的关系。有时我最终得到的源文件比我想要的更多。一些组织的约定-例如,避免(嵌套的)内部类或文件中较低的“帮助”类-使这种情况变得更糟,超出了编译器的要求。保持顺序井然有序,层次结构很有用,但请避免做工。
Roboprog
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.