import-private-name (PLC2701)
源自 Pylint 代码检查工具。
此规则不稳定且处于预览状态。使用需要 --preview
标志。
作用
检查导入语句,这些语句从另一个模块导入私有名称(以一个下划线 _
开头的名称)。
为什么这不好?
PEP 8 规定以下划线开头的名称是私有的。 因此,它们不应在定义它们的模块之外使用。
此外,由于私有导入不被视为公共 API 的一部分,因此它们容易发生意外更改,尤其是在语义版本控制之外。
相反,请考虑使用模块的公共 API。
此规则忽略仅在类型注解中使用的私有名称导入。 理想情况下,类型应该是公共的;但是,在使用第三方库时,这并非总是可能的。
已知问题
如果模块是使用 PEP 420 命名空间包(即省略 __init__.py
文件的目录)定义的,则不忽略从定义私有名称的模块内导入私有名称。 命名空间包必须通过 namespace-packages
设置进行配置。