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

时间:2013-11-06 09:22:03

标签: python

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

例如:

from scipy.sparse.csgraph import dijkstra

from scipy.csgraph import dijkstra

甚至是完全扁平的设计:

from scipy import dijkstra

注意

  1. 这个问题是关于Python的,因为惯用的Python 进行其他权衡,而不是惯用Java。
  2. 我说的是用户界面,而不是如何将代码构建为库设计器。

1 个答案:

答案 0 :(得分:0)

我认为 Python 包中接口特定的目标方面至少包含以下内容:

  • 名称间距
    如果您的包中有多个dijkstra实现,将它们放在不同的子模块中显然是有意义的,以避免使用miller_dijkstra或{{ 1}}。通过将每个实现放在一个单独的模块中,这永远不会发生冲突。

  • 转发声明
    在某些情况下,如果您有循环导入,则可能会在Python中遇到问题。然后将所有内容放在一个单独的模块中有时可以帮助解决这些问题。