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