广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python3中return和yield的区别是什么
  • 425
分享到

Python3中return和yield的区别是什么

2023-07-02 00:07:43 425人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要讲解了“python3中return和yield的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python3中return和yield的区别是什么”吧!一、前言ret

这篇文章主要讲解了“python3中return和yield的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python3中return和yield的区别是什么”吧!

    一、前言

    return一直中,每中语言中其没没有很大差别,就不多说了。(shell语言return的是退出状态,可能差别是比较大的)最早看到yield应该是哪们语言用来调整什么线程优先级的,记不清了,不过那里的yield和Python中的yield应该功能有区别。

    二、return和yield的异同

    共同点:return和yield都用来返回值;在一次性地返回所有值场景中return和yield的作用是一样的。

    不同点:如果要返回的数据是通过for等循环生成的迭代器类型数据(如列表、元组),return只能在循环外部一次性地返回,yeild则可以在循环内部逐个元素返回。下边我们举例说明这个不同点。

    三、实例说明

    1 return版本

    示例代码如下:

    class TestYield:    def gen_iterator(self):        result_list = []        for j in range(3):            print(f"gen_iterator-{j}")            result_list.append(j)        # return在循环的外部,待变量完全生成后一次性返回        return result_list    def call_gen_iterator(self):        # 执行下边这句后result_list直接是完成的结果[0,1,2]        result_list = self.gen_iterator()        for i in result_list:            print(f"call_gen_iterator-{i}")if __name__ == "__main__":    obj = TestYield()    obj.call_gen_iterator()

    执行结果如下,可以看到一次性执行完下层函数,生成完整的迭代器类型返回值result_list,一次性返回给上层函数:

    Python3中return和yield的区别是什么

    2 yield版本

    示例代码如下:

    class TestYield:    def gen_iterator(self):        for j in range(3):            print(f"do_something-{j}")            # yield在for循环内部            yield j    def call_gen_iterator(self):        # yield并不是直接返回[0,1,2],执行下边这句后result_list什么值都没有        result_list = self.gen_iterator()        # i每请求一个数据,才会触发gen_iterator生成一个数据        for i in result_list:            print(f"call_gen_iterator-{i}")if __name__ == "__main__":    obj = TestYield()    obj.call_gen_iterator()

    执行结果如下,可以看到上下层函数是交替进行的,即上层函数请求迭代一个值下层函数才生成一个值并立即返回这个值:

    Python3中return和yield的区别是什么

    3 yield的意义

    从上边两个小节可以看到,虽然return和yield两者执行的顺序有区别,但整个要做的事情是一样的,所以使用yield并不会比return快,甚至我们可以猜测由于yield总发生上下文切换在速度上还会慢一些,所以速度不是yield的意义。

    他们的主要区别是yiled要迭代到哪个元素那个元素才即时地生成,而return要用一个中间变量result_list保存返回值,当result_list的长度很长且每个组成元素内容很大时将会耗费比较大的内存,此时yield相对return才有优势。

    四、yield和return嵌套使用

    class TestYield:    def gen_iterator(self):        for j in range(3):            print(f"do_something-{j}")            # yield在for循环内部            yield j    def gen_iterator_middle(self):        print(f"gen_iterator_middle")        # 返回的是迭代器的句柄,所以加一层return不影响是可以理解的        return self.gen_iterator()    def call_gen_iterator(self):        # yield并不是直接返回[0,1,2],执行下边这句后result_list什么值都没有        result_list = self.gen_iterator_middle()        # i每请求一个数据,才会触发gen_iterator生成一个数据        for i in result_list:            print(f"call_gen_iterator-{i}")if __name__ == "__main__":    obj = TestYield()    obj.call_gen_iterator()

    Python3中return和yield的区别是什么

    感谢各位的阅读,以上就是“Python3中return和yield的区别是什么”的内容了,经过本文的学习后,相信大家对Python3中return和yield的区别是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    --结束END--

    本文标题: Python3中return和yield的区别是什么

    本文链接: https://www.lsjlt.com/news/338670.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Python3中return和yield的区别是什么
      这篇文章主要讲解了“Python3中return和yield的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python3中return和yield的区别是什么”吧!一、前言ret...
      99+
      2023-07-02
    • Python3 中return和yield的区别
      目录一、前言二、return和yield的异同三、实例说明1 return版本2 yield版本3 yield的意义四、yield和return嵌套使用一、前言 return一直中,...
      99+
      2022-11-11
    • Python中Yield的基本用法及Yield与return的区别解析
      目录一、yield的功能1. 使用next方法迭代生成器2. 使用send()方法与生成器函数通信3. Yield的好处二、总结yield的功能三、yield VS return一、...
      99+
      2022-11-11
    • php中echo和return的区别是什么
      本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑项目中碰到的问题,本来是想在控制器直接return $xml的($xml是一段xml格式的代码),但是测试却发现什么都没有输出。换成echo $xml;就成功了,所以特...
      99+
      2018-04-25
      php echo return
    • python中的return和yield有什么不同
      这篇文章主要介绍“python中的return和yield有什么不同”,在日常操作中,相信很多人在python中的return和yield有什么不同问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python中...
      99+
      2023-06-20
    • C语言中的return true和return false有什么区别
      在C语言中,return true和return false是用于表示一个函数的返回值是真(true)或假(false)。它们的区别...
      99+
      2023-08-19
      C语言
    • Java编程语言中sleep()和yield()的区别是什么
      这篇文章主要讲解了“Java编程语言中sleep()和yield()的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java编程语言中sleep()和yield()的区别是什么”吧...
      99+
      2023-06-17
    • C语言中return、exit和abort的区别是什么
      这篇文章将为大家详细讲解有关C语言中return、exit和abort的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一般情况下,在C语言中退出一个程序用return,如果在mai...
      99+
      2023-06-22
    • python中return和print有什么区别
      本篇文章给大家分享的是有关python中return和print有什么区别,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python主要用来做什么Python主要应用于:1、W...
      99+
      2023-06-14
    • JS构造函数中this和return的区别是什么
      本篇文章给大家分享的是有关JS构造函数中this和return的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。先看一段代码,func...
      99+
      2022-10-19
    • return语句的作用和echo的区别是什么
      这篇文章将为大家详细讲解有关return语句的作用和echo的区别是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。return语句的作用:具有return语句的函数是具有返回值的函数没有return语...
      99+
      2023-06-15
    • pytest解读fixtures中yield与addfinalizer区别是什么
      本文小编为大家详细介绍“pytest解读fixtures中yield与addfinalizer区别是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“pytest解读fixtures中yield与addfinalizer区别是什么”文章能...
      99+
      2023-06-30
    • Python3中re.match与re.search的区别是什么
      本文小编为大家详细介绍“Python3中re.match与re.search的区别是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python3中re.match与re.search的区别是什么”文章能帮助大家解决疑惑,下面跟着小编的...
      99+
      2023-06-08
    • java中yield()和sleep()的区别有哪些
      这篇文章将为大家详细讲解有关java中yield()和sleep()的区别有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Androi...
      99+
      2023-06-15
    • Python3 和 Python2 有什么区别
      这篇文章给大家介绍Python3 和 Python2 有什么区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python3和Python2相比:Python3去除print语句,加入print()函数实现相同的功能。...
      99+
      2023-06-19
    • python2和python3有什么区别
      python2和python3有什么区别?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象...
      99+
      2023-06-14
    • Shell中exit和return的区别讲解
      1.exit命令 exit命令是Shell内建命令,用于退出当前Shell进程。使用格式如下: exit [<n>] 可以指定退出状态n,n的取值范围是0-255,一般情况下,0表示正常退出,非零表示异...
      99+
      2022-06-04
      shell中exit和return shell中exit和return的区别讲解
    • Shell中exit和return的区别有哪些
      这篇文章主要介绍了Shell中exit和return的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.exit命令exit命令是Shell内建命令,用于退出当前S...
      99+
      2023-06-09
    • Python3中延时变量和free_list链表的区别是什么
      今天小编给大家分享一下Python3中延时变量和free_list链表的区别是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
      99+
      2023-07-06
    • c语言中exit和return的区别点总结
      1、返回函数值的return是关键字,exit是一个函数。 return是语言级的,它表示调用堆栈的返回;exit是系统调用级的,它表示一个过程的结束。 2、return是函数的退出...
      99+
      2022-11-12
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作