我有一个包含数十个不同模块的大项目。 我确实有很多常用的功能,我在项目的很多地方都使用过。例如:
我的问题是:
common.py
?答案 0 :(得分:8)
util
或utils
的变体似乎很常见。就个人而言,如果我有myproj.foo
,myproj.bar
等软件包,我倾向于拥有一个myproj.util
包,每个意图区域都有一个模块(对于Web相关可能myproj.util.http
帮助程序,myproj.util.data
用于数据结构操作等)。这些帮助程序比主代码更有可能被重用,并且清晰地分离到模块中(即使您最终拥有单类或单功能模块)也会使重用更容易。
答案 1 :(得分:4)
根据我的知识:
第一:如果这些功能,好吧,有1000s / 100s的行/功能,模块将变得越来越笨重,难以读和编辑。 包将是它的正确选择,因为它有助于细粒度分类和轻微快速加载模块 - 正如 delnan 正确指出的那样 - 还有许多其他许多我目前都不知道的优点。
现在,假设您的项目在整个开发阶段只需要10-20个这样的功能,那么我建议单个模块可以做。
第二个 utilities
包后跟特定名称为foo.py
的特定模块。或者只是utilities.py
第3名:我很感激其他人的回答。
PS:经验法则。尽量保持utility
函数独立于项目逻辑并尽可能通用。这样,您的函数可以在其他地方重用,而不会出现依赖性问题
编辑1-2:提高第一个答案的准确性
答案 2 :(得分:1)
我们一直将这些放在项目根目录下的core/
模块下,每个模块都在自己的文件中(假设它们没有任何共同点)。我们之所以选择名称core
只是因为这就是Django使用的名称,而from myproject.core import rand_string
就是一定的逻辑。
对于较小模块的共性,例如Django应用程序,我们将函数放在应用程序根目录中的utils.py
文件中 - 尽管我对该解决方案并不完全满意......