python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python yield和return的对比

python之yield和return的对比分析

作者:冻梨不是梨

这篇文章主要介绍了python之yield和return的对比分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

python yield和return的对比

例子:求一组数的平方值

return 实现:

def squre(n):
    ls = [i*i for i in range(n)]
    return ls
for i in squre(5):
    print(i, end='  ')

结果为:

0  1  4  9  16  

yield 实现:

def squre(n):
    for i in range(n):
        yield i*i
for i in squre(5):
    print(i, end='  ')

结果为:

0  1  4  9  16  

yield 生成器相比 return一次返回所有结果的优势:

(1)反应更迅速

(2)更节省空间

(3)使用更灵活

python3中函数里的return和yield共存时的细节

在python3中,生成器的创建方式有两种:

利用列表生成式和函数中添加yield

在这需要注意的是,当采集函数创建生成器时,如果函数中含有return,则不会通过return得到任凭结果,return中止当前生成器,如果执行next()会报错。

def f1():
    for i in range(10):
        print(i)
        i +=1
        yield i
        return i
f = f1()
next(f)
next(f)
next(f)
next(f)

函数有了yield后,函数名加()得到一个生成器。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文