Python生成器对象send()方法用法

关于生成器基本用法请参考详解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小屋(Python_xiaowu)

原文发表时间:2017-03-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏决胜机器学习

《Redis设计与实现》读书笔记(八) ——Redis列表对象和哈希对象实现原理

《Redis设计与实现》读书笔记(八) ——Redis列表对象和哈希对象实现原理 (原创内容,转载请注明来源,谢谢) 一、列表对象 列表对象的编码可以是zipl...

4087
来自专栏ml

hdu 3518 (后缀数组)

  题目描述:   找出一个字符串中至少重复出现两次的字串的个数(重复出现时不能重叠)。   code:      后缀数组处理,对于得到height 进行查找...

3384
来自专栏Java面试笔试题

List、Map、Set三个接口存取元素时,各有什么特点?

List以特定索引来存取元素,可以有重复元素。Set不能存放重复元素(用对象的equals()方法来区分元素是否重复)。Map保存键值对(key-value p...

952
来自专栏不想当开发的产品不是好测试

java匿名内部类

show the code : package com.test.jwen.httpApiAuto; public class AInter { publ...

2267
来自专栏java思维导图

【一分钟知识】异常处理,值传递和引用传递

异常处理 关键字:throws、throw、try、catch、finally try用来指定一块预防所有异常的程序; catch子句紧跟在try块后面,用来指...

3448
来自专栏Python小屋

黑客走开系列1:Python使用元组做函数实参让代码更安全!

在Python内置对象中,列表、字典、集合属于可变序列,作为函数实参是不安全的,尤其是调用别人写好的恶意函数或者调用被人恶意修改过的函数时,很容易被修改实参。而...

2847
来自专栏Django Scrapy

python3 解码base64遇到的问题与解决

错误代码:binascii.Error: Incorrect padding 解决方法 在解码前使用这个方法 if len(message) % 4: ...

3779
来自专栏开源优测

python selenium2 - webelement操作常用方法

完整路径 C:\Python27\Lib\site-packages\selenium\webdriver\remote\webelement...

3105
来自专栏java一日一条

自己动手实现一个 Java Class 解析器

最近在写一个私人项目,名字叫做ClassAnalyzer,ClassAnalyzer的目的是能让我们对Java Class文件的设计与结构能够有一个深入的理解。...

1234
来自专栏架构之路

Spring AOP中 args和arg-names的区别

这两天在看aop aspectj的各种语法,发现里面有两个概念 args和arg-names很容易混淆,网上也基本没说清楚,所以就动手试了一下,发现还是自己试试...

3856

扫码关注云+社区

领取腾讯云代金券