跳到内容

zip-without-explicit-strict (B905)

源自 flake8-bugbear linter。

修复总是可用的。

作用

检查没有显式 strict 参数的 zip 调用。

为什么这不好?

默认情况下,如果传递给 zip 的可迭代对象的长度不同,则生成的迭代器将被静默截断为最短的可迭代对象的长度。这可能会导致难以发现的错误。

传递 strict=True 以在可迭代对象的长度不一致时引发 ValueError。或者,如果可迭代对象故意具有不同的长度,则传递 strict=False 以明确意图。

示例

zip(a, b)

建议改为

zip(a, b, strict=True)

修复安全性

此规则的修复被标记为对于包含 **kwargszip 调用是不安全的,因为向此类调用添加 strict 关键字参数可能会导致重复的关键字参数错误。

参考