unused-import (F401)
派生自 Pyflakes 代码检查器。
有时提供修复。
作用
检查未使用的导入。
为什么这不好?
未使用的导入会在运行时增加性能开销,并有创建导入循环的风险。它们还会增加阅读代码的认知负担。
如果使用 import 语句来检查模块的可用性或存在性,请考虑使用 importlib.util.find_spec
代替。
如果使用 import 语句将符号作为模块公共接口的一部分重新导出,请考虑使用“冗余”导入别名,这会指示 Ruff(和其他工具)尊重重新导出,并避免将其标记为未使用,例如:
或者,您可以使用 __all__
将符号声明为模块接口的一部分,例如:
修复安全性
删除未使用导入的修复是安全的,但在 __init__.py
文件中除外。
将修复应用于 __init__.py
文件目前处于预览阶段。提供的修复取决于未使用导入的类型。Ruff 将建议使用冗余别名或(如果已存在于文件中)__all__
条目来导出第一方导入的安全修复。如果存在多个 __all__
声明,Ruff 将不会提供修复。Ruff 将建议删除第三方和标准库导入的不安全修复——修复是不安全的,因为模块的接口会发生更改。
示例
建议改为
要检查模块的可用性,请使用 importlib.util.find_spec
from importlib.util import find_spec
if find_spec("numpy") is not None:
print("numpy is installed")
else:
print("numpy is not installed")
预览
启用 preview 后,用于确定导入是否为第一方的标准更加严格,这可能会影响建议的修复。有关更多详细信息,请参阅 此常见问题解答部分。