将return放在yield后面是Pythonic吗?

问题描述 投票:0回答:1

考虑以下代码:

def some_gen():
    if some_condition:
        yield "Condition"
        return
    for ....:
        yield some_value

“yield”之后的“return”伤了我的眼睛,还有更“pythonic”的方式吗? (我知道我可以使用“else”,但我想避免不必要的嵌套)

它也可能在代码审查期间引起一些混乱,因为空返回给出 None

python generator yield
1个回答
0
投票

我认为一种更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()
© www.soinside.com 2019 - 2024. All rights reserved.