python yield什么意思

阅读别人的python源码时碰到了这个yield这个关键字,各种搜索终于搞懂了,在此做一下总结:

python yield什么意思

通常的for…in…循环中,in后面是一个数组,这个数组就是一个可迭代对象,类似的还有链表,字符串,文件。它可以是mylist= [1, 2, 3],也可以是mylist = [x*x for x in range(3)]。 它的缺陷是所有数据都在内存中,如果有海量数据的话将会非常耗内存。(推荐学习:Python视频教程)

生成器是可以迭代的,但只可以读取它一次。因为用的时候才生成。比如 mygenerator = (x*x for x in range(3)),注意这里用到了(),它就不是数组,而上面的例子是[]。

我理解的生成器(generator)能够迭代的关键是它有一个next()方法,工作原理就是通过重复调用next()方法,直到捕获一个异常。可以用上面的mygenerator测试。

立即学习“Python免费学习笔记(深入)”;

带有yield的函数不再是一个普通函数,而是一个生成器generator,可用于迭代,工作原理同上。

yield一个类似return的关键字,迭代一次遇到yield时就返回yield后面的值。重点是:下一次迭代时,从上一次迭代遇到的yield后面的代码开始执行。

简要理解:yield就是return返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后开始。

带有yield的函数不仅仅只用于for循环中,而且可用于某个函数的参数,只要这个函数的参数允许迭代参数。比如array.extend函数,它的原型是array.extend(iterable)。

send(msg)与next()的区别在于send可以传递参数给yield表达式,这时传递的参数会作为yield表达式的值,而yield的参数是返回给调用者的值。——换句话说,就是send可以强行修改上一个yield表达式值。比如函数中有一个yield赋值,a

= yield 5,第一次迭代到这里会返回5,a还没有赋值。第二次迭代时,使用.send(10),那么,就是强行修改a表达式的值为10,本来是None的,那么a=10

send(msg)与next()都有返回值,它们的返回值是当前迭代遇到yield时,yield后面表达式的值,其实就是当前迭代中yield后面的参数。

第一次调用时必须先next()或send(None),否则会报错,send后之所以为None是因为这时候没有上一个yield(根据第8条)。可以认为,next()等同于send(None)。

更多Python相关技术文章,请访问Python教程栏目进行学习!

以上就是python yield什么意思的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2254695.html

(0)
上一篇 2025年2月27日 02:14:46
下一篇 2025年2月27日 02:15:11

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python的除法运算符是什么意思

    在python中,除法运算符有两种:/和//。 X / Y 对于Python2.X来说,如果两个操作数都是整数,那么结果将向下取整(这个和C里面的不同,C里面是向0取整),也就是说,如果结果本来是-2.5,那么向下取整为-3,如果结果本来是…

    2025年2月27日
    000
  • python中或者怎么表示

    python中或者怎么表示? python中或者用“or”表示,逻辑表达式为x or y。 “or”描述: 布尔”或”,如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 Python语言支持逻辑运算符…

    2025年2月27日
    200
  • 安装python还要安装什么

    Python当前的发展形势依然不够明确,十年前,像Perl,PHP和Ruby这样的脚本语言是技术领域最热门的东西。然而今天,却变成Python:如今Python是GitHub上第二大流行编程语言;Stack Overflow上增长最快的主要…

    2025年2月27日
    200
  • python怎么打开网页

    python打开网页方法一: 通过引用os包,调用system方法调用系统的ie程序来打开网址(推荐学习:Python视频教程) 代码如下: import os #C:/Program Files/Internet Explorer/iex…

    2025年2月27日
    200
  • python中x的平方怎么写

    python中x的平方怎么写? python的平方运算符是**,那么python中x的平方,就是这么写:x**2。 例如: 假设变量: a=10,b=20:  那么a**b 为10的20次方, 输出结果 100000000000000000…

    2025年2月27日
    200
  • python怎么安装tensorflow

    tensorflow™是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库distbelief。 在命令提示…

    2025年2月27日
    200
  • python input是什么意思

    python是一种解释型、面向对象、动态数据类型的高级程序设计语言。python由guido van rossum于1989年底发明,第一个公开发行版发行于1991年。像perl语言一样, python 源代码同样遵循 gpl(gnu ge…

    2025年2月27日
    200
  • python“与”怎么表示

    python与怎么表示? python与用“and”表示,逻辑表达式为x and y。 “and”描述:布尔”与” ,如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 Pytho…

    2025年2月27日
    200
  • python为什么要装32位的

    python(发音:英[ˈpaɪθən],美[ˈpaɪθɑ:n]),是一种面向对象、直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。…

    2025年2月27日
    200
  • python里//什么意思

    python里//什么意思? python里//表示取整除,返回商的整数部分(向下取整) #!/usr/bin/python# -*- coding: UTF-8 -*-a = 10b = 5c = a//b print “c 的值为:”,…

    2025年2月27日
    200

发表回复

登录后才能评论