考虑以下代码:
def some_gen():
if some_condition:
yield "Condition"
return
for ....:
yield some_value
“yield”之后的“return”伤了我的眼睛,还有更“pythonic”的方式吗? (我知道我可以使用“else”,但我想避免不必要的嵌套)
它也可能在代码审查期间引起一些混乱,因为空返回给出 None
我认为一种更Pythonic的方法是将if语句放在另一个函数中。您正在尝试同时将该函数用作函数和生成器。
我会做这样的事情:
def some_gen():
for ...:
yield some_value
def some_func():
if some_condition:
gen.close()
return "value"
return next(gen)
gen = some_gen()