您可以return
在生成器中使用一次;它会停止迭代而不会产生任何结果,因此提供了一种使函数超出范围的明确选择。因此,用于yield
将函数转换为生成器,但在return
产生任何内容之前先终止该生成器。
>>> def f():
... return
... yield
...
>>> list(f())
[]
我不确定这是否比您拥有的要好得多-它只是将无操作if
语句替换为无操作yield
语句。但这更惯用了。请注意,仅使用yield
不起作用。
>>> def f():
... yield
...
>>> list(f())
[None]