跳到内容

import-private-name (PLC2701)

源自 Pylint 代码检查工具。

此规则不稳定且处于预览状态。使用需要 --preview 标志。

作用

检查导入语句,这些语句从另一个模块导入私有名称(以一个下划线 _ 开头的名称)。

为什么这不好?

PEP 8 规定以下划线开头的名称是私有的。 因此,它们不应在定义它们的模块之外使用。

此外,由于私有导入不被视为公共 API 的一部分,因此它们容易发生意外更改,尤其是在语义版本控制之外。

相反,请考虑使用模块的公共 API。

此规则忽略仅在类型注解中使用的私有名称导入。 理想情况下,类型应该是公共的;但是,在使用第三方库时,这并非总是可能的。

已知问题

如果模块是使用 PEP 420 命名空间包(即省略 __init__.py 文件的目录)定义的,则不忽略从定义私有名称的模块内导入私有名称。 命名空间包必须通过 namespace-packages 设置进行配置。

示例

from foo import _bar

Options (选项)

参考