python之yield和return的对比分析

 更新时间:2023年08月14日 11:44:47   作者:冻梨不是梨  
这篇文章主要介绍了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后,函数名加()得到一个生成器。

总结

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

相关文章

  • Python操作Sonqube API获取检测结果并打印过程解析

    Python操作Sonqube API获取检测结果并打印过程解析

    这篇文章主要介绍了Python操作Sonqube API获取检测结果并打印过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Python强化练习之PyTorch opp算法实现月球登陆器

    Python强化练习之PyTorch opp算法实现月球登陆器

    在面向对象出现之前,我们采用的开发方法都是面向过程的编程(OPP)。面向过程的编程中最常用的一个分析方法是“功能分解”。我们会把用户需求先分解成模块,然后把模块分解成大的功能,再把大的功能分解成小的功能,整个需求就是按照这样的方式,最终分解成一个一个的函数
    2021-10-10
  • PyCharm MySQL可视化Database配置过程图解

    PyCharm MySQL可视化Database配置过程图解

    这篇文章主要介绍了PyCharm MySQL可视化Database配置过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • python使用tkinter实现透明窗体

    python使用tkinter实现透明窗体

    一直在思索实现一个透明的窗体,然后可以基于这个窗体可以开发出各种好玩的应用(如桌面运动的小人、运动的小球、截图、录制GIF等等),今天无意间居然让我把其中一个最核心的技术难关突破了,我非常高兴,也借这个机会跟大家分享一下。
    2021-05-05
  • 用C++封装MySQL的API的教程

    用C++封装MySQL的API的教程

    这篇文章主要介绍了用C++封装MySQL的API的教程,包括对语句拼装器SQLJoin的介绍,需要的朋友可以参考下
    2015-05-05
  • Python实现冒泡排序算法的完整实例

    Python实现冒泡排序算法的完整实例

    这篇文章主要给大家介绍了关于Python实现冒泡排序算法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Python实现模拟浏览器请求及会话保持操作示例

    Python实现模拟浏览器请求及会话保持操作示例

    这篇文章主要介绍了Python实现模拟浏览器请求及会话保持操作,结合实例形式分析了Python基于urllib与urllib2模块模拟浏览器请求及cookie保存会话相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • 解决Django加载静态资源失败的问题

    解决Django加载静态资源失败的问题

    今天小编就为大家分享一篇解决Django加载静态资源失败的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 使用Python从有道词典网页获取单词翻译

    使用Python从有道词典网页获取单词翻译

    这篇文章主要介绍了使用Python从有道词典网页获取单词翻译的相关资料,需要的朋友可以参考下
    2016-07-07
  • 对TensorFlow的assign赋值用法详解

    对TensorFlow的assign赋值用法详解

    今天小编就为大家分享一篇对TensorFlow的assign赋值用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论