python - 私有(private)和公共(public)包模块?

标签 python module package conventions

在Python中,我们通常通过在私有(private)属性名称的开头加上_前缀来区分类、对象和模块的私有(private)和公共(public)属性。因此,供私有(private)使用的模块级函数将被命名为 _func

对于包级元素(即模块)是否有这样的约定?例如,假设我有几个模块是公共(public) API 的一部分(除了它们的私有(private) _ 前缀组件)和几个完全供私有(private)使用的模块。我应该在私有(private)前缀前添加 _ 吗?我应该将它们放在“private”子包中吗?

这有约定吗?

最佳答案

PEP8当然是 Python 编码风格的公认约定,但是它并没有深入讨论包命名:

来自Package and Module Names :

Modules should have short, all-lowercase names. Underscores can be used in the module name if it improves readability. Python packages should also have short, all-lowercase names, although the use of underscores is discouraged.

简而言之,没有真正公认的标准来让用户知道不应使用特定的子包。相反,您应该清楚地记录您的代码以指示私有(private)和公共(public)包。您使用 private 包的建议非常适合那里。 内部可能是另一种选择。

Public and Internal Interfaces对此进行更深入的探讨:

Documented interfaces are considered public, unless the documentation explicitly declares them to be provisional or internal interfaces exempt from the usual backwards compatibility guarantees. All undocumented interfaces should be assumed to be internal.

An interface is also considered internal if any containing namespace (package, module or class) is considered internal.

关于python - 私有(private)和公共(public)包模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32850949/

相关文章:

python - 明智地合并元组列表并将其转换为列表列表

python - 使用相似度函数对 scikit-learn 进行聚类

python - 在 Python 应用程序 (Windows) 中创建小型转储

c - 在 Linux 内核中使用模块覆盖功能

haskell - 类型类和模块如何交互?

php - Magento 1.9 - 模块中的多个助手

java - 在根目录中导入Java包

python - 有没有办法判断函数是否在单元测试中执行?

node.js - NPM 安装在 loadRequestedDeps 上挂起

不同包中的java复制构造函数