unnecessary-enumerate (FURB148)
派生自 refurb 代码检查工具。
有时提供修复。
此规则不稳定且处于预览状态。使用需要 --preview
标志。
作用
检查 enumerate
的使用,当迭代序列时,丢弃了索引或值。
为什么这不好?
内置函数 enumerate
在您需要序列的索引和值时非常有用。
如果您只需要序列的索引或值,则应分别迭代 range(len(...))
或序列本身。 这样做更有效,并且更清晰地表达了代码的意图。
已知问题
由于类型推断的限制,此规则容易产生误报; 也就是说,只有当传递给 enumerate
的序列被实例化为列表、集合、字典或元组字面量,或使用类型注释进行注释时,它才会建议使用 len
内置函数进行修复。
len
内置函数并非为所有对象类型(例如生成器)定义,因此重构为使用 len
代替 enumerate
并不总是安全的。
示例
建议改为