zip-instead-of-pairwise (RUF007)
有时提供修复。
作用
检查是否使用 zip()
迭代连续的元素对。
为什么这不好?
当迭代连续的元素对时,优先使用 itertools.pairwise()
而不是 zip()
。
itertools.pairwise()
更具可读性,并且更清晰地表达了代码的意图。
示例
建议改为
from itertools import pairwise
letters = "ABCD"
pairwise(letters) # ("A", "B"), ("B", "C"), ("C", "D")
修复安全性
此修复始终被标记为不安全,因为它假设切片一个对象(例如,obj[1:]
)会产生与原始对象具有相同类型和迭代行为的值,但对于重写了 __getitem__
但未正确处理切片的用户自定义类型,则无法保证这一点。此外,此修复可能会删除注释。