关于生成器基本用法请参考详解Python生成器函数和生成器对象的原理和用法

>>> def f():
    yield from 'abcdefg'     #使用yield表达式创建生成器
   
>>> x = f()
>>> next(x)
'a'
>>> next(x)
'b'
>>> for item in x:  #输出x中的剩余元素
    print(item, end=' ')
   
c d e f g
>>> def gen():
    yield 1
    yield 2
    yield 3
   
>>> x, y, z = gen()   #生成器对象支持序列解包

生成器对象还支持使用send()方法传入新值,从而改变后续生成的数据,这时要对yield表达式稍微改写一下。

>>> def gen(start, end):
    i = start
    while i < end:
        v = (yield i)
        if v:
            i = v
        else:
            i += 1
           
>>> g = gen(1, 101)
>>> next(g)
1
>>> g.__next__()
2
>>> g.send(9)  #传入新值,改变后续生成的数据
9
>>> next(g)
10

Python生成器对象send()方法用法相关推荐

  1. Python生成器的send方法、递推函数、匿名函数及常用内置函数

    1.生成器的send方法 在使用yield方法创建生成器时,不仅可以使用next方法进行取值,还可以通过send方法向生成器的内部传值 1.1 什么是send方法? send方法相当于高级的next方 ...

  2. python生成器的send方法

    官方文档: generator.send(value) 恢复执行并向生成器函数"发送"一个值. value 参数将成为当前 yield 表达式的结果. send() 方法会返回生成 ...

  3. python 生成器 send_python(可迭代对象,迭代器,生成器及send方法详解)

    一.可迭代对象 对象必须提供一个__iter__()方法,如果有,那么就是可迭代对象, 像列表,元祖,字典等都是可迭代对象 可使用isinstance(obj,Iterable)方法判断 1 from ...

  4. Python系列(七):用栗子带你深入了解生成器的send()方法

    一.问题引入 在Python中,可以使用生成器来一次返回单个元素,从而可以避免大量占用内存.下面例子中计算房价函数house_price便是一个生成器的栗子,该函数接收两个参数,其中unit_pric ...

  5. Python生成器(send,close,throw)方法详解

    <Python生成器>一节中,详细介绍了如何创建一个生成器,以及生成器的基础用法.本节将在其基础上,继续讲解和生成器有关的一些方法. Python生成器send()方法 我们知道,通过调用 ...

  6. Python生成器及send用法讲解

    - 生成器 我们调用一个普通的Python函数时,一般是从函数的第一行代码开始执行,结束于return语句.异常或者函数结束(可以看作隐式的返回None).一旦函数将控制权交还给调用者,就意味着全部结 ...

  7. python 类 对象 魔法方法概念+习题

    类 对象 类 对象是c++和java中都有的内容,python定义类的简单语法如下: class 类名: -类变量或者方法 Python 的类定义有点像函数定义,都是以冒号:作为类体的开始,以统一缩进 ...

  8. ret php,php生成器的send方法详解,php yield send

    [一].基本用法 首先看看官方对send方法的解释:Sets the return value of the yield expression and resumes the generator (u ...

  9. Python通过对象名调用方法(对象名后面括号和参数)

    实习做一个自动化测试项目的时候看到大佬代码: d = u2.connect() #该方法返回一个UIAutomatorServer类的实例 d(discription = 'Books').click ...

最新文章

  1. 框架:Spring的自动装配
  2. 日期年月日的比较以及判断
  3. Revvel如何将视频转码速度提升几十倍?
  4. JAVA知识基础(三):修饰符
  5. 通过传址交换两个字符
  6. 华为荣耀v8计算机没了,华为荣耀V8真机实测 没了徕卡到底咋样?
  7. iOS----------获取通知状态并跳转设置界面设置
  8. C#技术分享【PDF转换成图片——11种方案】
  9. ORM定制的几点注意事项
  10. 如何零基础入门产品经理
  11. 计算机用户名中文改为英文,win10系统怎么更改user用户名中文为英文
  12. JVM - 类加载器
  13. 圆通JAVA职级_圆通小编升职啦,快看看你的职级有没有变化
  14. 易学笔记-系统分析师考试-第9章 系统规划/9.5 成本效益分析技术/9.5.3 投资回收期和投资回报率
  15. zblog如何调用HTML,Zblog教程:模板文件与调用标签详细说明
  16. 【神经网络架构】Pyramid Convolution(金字塔卷积模块)论文笔记
  17. 《创业算法》:技术人做CEO的优势和劣势
  18. 【金融大脑-一支优秀的队伍】比赛经验分享
  19. Qt之绘制折线图:图标以及坐标轴设置
  20. 超详细Vue Devtools的下载和安装——Vue的调试工具

热门文章

  1. 构建新模式java_Nacos 1.3.0 来了,基于全新内核构建!
  2. nginx php重定向,Thinkphp linux nginx重定向配置
  3. sqlserver date类型和字符串比较_Mongo的数据类型
  4. oracle数据库图书,基于oracle数据库,创建图书表(一)
  5. 浙大java语言程序设计_浙江大学java语言程序设计实验答案全集.doc
  6. python面向对象三大特性6大原则_【Python学习笔记】面向对象三大特性
  7. websocket 发送图片_Netty(四)实现WebSocket
  8. 1小时搞懂设计模式之单例模式
  9. dw写出来的php乱码,解决DW中的乱码问题
  10. xlsxwriter php,Xlsxwriter