VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • python之yield和return的对比分析

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

python yield和return的对比
相同点:都是返回函数执行的结果
不同点:return 在返回结果后结束函数的运行,而yield 则是让函数变成一个生成器,生成器每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值

例子:求一组数的平方值
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后,函数名加()得到一个生成器。

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

原文链接:https://blog.csdn.net/qq_34246164/article/details/80960363


相关教程