yield-in-for-loop (UP028)
源自 pyupgrade linter。
有时提供修复。
作用
检查可以被 yield from
表达式替换的 for
循环。
为什么这不好?
如果一个 for
循环只包含一个 yield
语句,那么它可以被更简洁和地道的 yield from
表达式替换。
示例
建议改为
修复安全性
此规则的修复被标记为不安全,因为将 for
循环转换为 yield from
表达式可能会在极少数情况下改变程序的行为。例如,如果一个生成器正在通过 send
发送值,那么重写为 yield from
可能会导致属性错误,如果底层生成器没有实现 send
方法。
此外,如果至少有一个目标是 global
或 nonlocal
,则不会提供修复。
但是在大多数情况下,这个修复是安全的,这样的修改应该不会对程序的行为产生影响。