【问题标题】:Private and public package modules?私有和公共包模块?
【发布时间】:2015-12-27 08:17:28
【问题描述】:
在 Python 中,我们通常通过在私有属性名称的开头加上 _ 前缀来区分类、对象和模块的私有属性和公共属性。因此,用于私人使用的模块级函数将命名为_func。
对于包级元素(即模块)是否有这样的约定?例如,假设我有几个模块是公共 API 的一部分(除了它们的私有 _ 前缀组件)和几个完全供私人使用的模块。我应该在私人的前面加上_ 吗?我应该将它们放在“private”子包中吗?
这有约定吗?
【问题讨论】:
标签:
python
module
packages
conventions
【解决方案1】:
PEP8 当然是公认的 Python 编码风格约定,但它并没有深入探讨包命名:
来自Package and Module Names :
模块应该有简短的全小写名称。如果提高可读性,可以在模块名称中使用下划线。 Python 包也应该有简短的全小写名称,尽管不鼓励使用下划线。
简而言之,没有真正公认的标准让用户知道不应使用特定的子包。相反,您应该清楚地记录您的代码以指示私有和公共包。您对使用 private 包的建议很适合那里。 internal 可能是另一种选择。
Public and Internal Interfaces 对此进行了更深入的介绍:
文档化接口被认为是公共的,除非文档明确声明它们是临时或内部接口,不受通常的向后兼容性保证的约束。所有未记录的接口都应假定为内部接口。
和
如果任何包含命名空间(包、模块或类)被认为是内部的,则接口也被认为是内部的。