跳到内容

batched-without-explicit-strict (B911)

源自 flake8-bugbear linter。

作用

检查 itertools.batched 调用是否缺少显式的 strict 参数。

为什么这不好?

默认情况下,如果可迭代对象的长度不能被 itertools.batched 的第二个参数整除,则最后一个批次将比其余批次短。

在 Python 3.13 中,添加了一个 strict 参数,允许控制批次是否必须具有统一的长度。如果批次的长度不统一,则传递 strict=True 会引发 ValueError。否则,传递 strict=False 以明确意图。

示例

import itertools

itertools.batched(iterable, n)

如果批次必须具有统一的长度,则改为使用此方法

import itertools

itertools.batched(iterable, n, strict=True)

或者如果批次的长度可以不统一,则使用此方法

import itertools

itertools.batched(iterable, n, strict=False)

已知偏差

与上游的 B911 不同,此规则不会报告无限迭代器(例如,itertools.cycle(...))。

Options (选项)

参考