python—为什么即使条件为false也会返回生成器对象

gopyfrb3  于 2021-08-25  发布在  Java
关注(0)|答案(2)|浏览(299)

此代码在结果中给出“否”:

def question(truth=False):
    if not truth:
        return("no")
    else:
        return("yes")

print(question())

此代码在结果中给出“<generator object question at 0x000001a1e548cc80>”:

def question(truth=False):
    if not truth:
        return("no")
    else:
        yield("yes")

print(question())

为什么第二个会给出不同的结果?不符合屈服条件。

fiei3ece

fiei3ece1#

因为使用 yield 语句始终创建生成器。该函数仅在遍历生成器时执行,而不是在最初调用该函数时执行。

zour9fqk

zour9fqk2#

好问题。在函数/方法中的任意位置使用“yield”关键字将立即使该函数/方法成为生成器,因此无法返回。不管yield关键字是否可以访问,它的存在就足够了。

相关问题