used-dummy-variable (RUF052)
有时提供修复。
此规则不稳定且处于预览状态。使用需要 --preview
标志。
作用
检查“虚拟变量”(即命名方式表明其未被使用的变量),但实际上已被使用的情况。
默认情况下,“虚拟变量”是指任何名称以一个或多个前导下划线开头的变量。但是,可以使用 lint.dummy-variable-rgx
设置进行自定义。
为什么这不好?
用前导下划线标记变量表示该变量在函数或方法中有意未使用。当这些变量稍后在代码中被引用时,会导致混淆,并可能对代码的意图产生误解。如果标记为“未使用”的变量随后被使用,则表明该变量可以被赋予更清晰的名称,或者代码意外地使用了错误的变量。
有时使用前导下划线是为了避免变量遮蔽其他变量、Python 内置函数或 Python 关键字。但是,PEP 8 建议为此使用尾随下划线,而不是前导下划线。
双下划线变量和名为 _
的变量会被此规则忽略。该规则仅标记函数范围内的局部变量。
示例
def function():
_variable = 3
# important: avoid shadowing the builtin `id()` function!
_id = 4
return _variable + _id
建议改为
def function():
variable = 3
# important: avoid shadowing the builtin `id()` function!
id_ = 4
return variable + id_
修复可用性
此规则的修复仅适用于以前导下划线开头的变量。 并且只有在变量的“显而易见”的新名称不会遮蔽变量定义范围内的任何其他已知变量时才可用。
修复安全性
此规则的修复被标记为不安全。
对于此规则的修复,Ruff 会重命名变量,并修复对它的所有已知引用,以便它们指向重命名的变量。 但是,某些重命名还需要其他更改,例如构造函数调用的不同参数或对注释的更改。 Ruff 知道其中一些情况:如果 _T
绑定被此规则标记,则 _T = TypeVar("_T")
将被修复为 T = TypeVar("T")
。 然而,总的来说,这些情况很难检测并且很难自动修复。