Python中的深层模块层次结构与扁平模块层次结构对比

4

Python中的一些库是按子模块层次结构组织的。从库的用户角度来看,这种设计的优缺点是什么?

例如:

from scipy.sparse.csgraph import dijkstra

对比:

from scipy.csgraph import dijkstra

甚至是完全扁平化的设计:
from scipy import dijkstra

注意:

  1. 这个问题是关于Python的,因为Python惯用语法和其他语言(比如Java)相比有不同的权衡。
  2. 我所说的是用户界面,而不是作为库设计者应该如何构建代码结构。

不错的问题,但我认为这主要是基于个人观点的。 - aIKid
也许吧,但我认为每种方法都有一些客观的利弊,比如模块加载时间、敲击量、与现有工具的兼容性(自动完成)。 - Maarten
1个回答

0

我认为与Python软件包中的接口相关的客观方面至少将包含以下内容:

  • 命名空间
    如果您的软件包中有多个dijkstra实现,将它们放在不同的子模块中显然是有意义的,以避免出现奇怪的名称,例如miller_dijkstra或者dijkstra_v1。通过将每个实现放在单独的模块中,可以避免冲突。

  • 前置声明
    在某些情况下,如果存在循环引用,则可能会在Python中遇到问题。然后将所有内容放在单独的模块中有时可以帮助解决这些问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接