16. Python脚本学习笔记十六生成器

16. Python脚本学习笔记十六生成器

本篇名言:“打开你的手机,收到我的祝福,忘掉所有烦恼,你会幸福每秒,对着镜子笑笑,从此开心到老,想想明天美好,相信自己最好。”

                  生成器是Python新引入的概念,也叫简单生成器。

                  生成器和迭代器应该是Python中引入的强大特性。生成器可以帮助读者写出非常优化的代码。

1.  创建生成器

任何包含yield语句的函数称为生成器。

如下:

>>>g=((i+2)**2 for i in range(2,27))

>>>g.next()

16

生成器推导式和列表推导式工作方式类似,列表推导式是用普通圆括号而不是中括号。此外,列表推导式是立即实例化一个列表,所以没有迭代的优势。

                  生成器由两部分组成:生成器的函数和生成器的迭代器。生成器的函数使用def语句定义的,包含yield的部分,生成器的迭代器是这个函数返回的部分。

                  生成器的函数返回的迭代器可以像其他的迭代器那样使用。

defsimple_generator():

    yield

 

printsimple_generator

printsimple_generator()

输出如下:

<functionsimple_generator at 0x0245FCF0>

<generatorobject simple_generator at 0x0246B468>

 

 

2.  生成器方法

外部作用域访问生成器的send方法,像访问next方法一样。

使用send方法只有在生成器挂起之后才有意义,也就是说在在生成器挂起之后才有意义,也就是说在yield函数第一次执行之后。

如下示例:

defrepeater(value):

    whileTrue:

        new = (yield value)

        if new isnotNone:  value = new

   

r = repeater(42)

 

printr.next()

print r.send("hello,world")

输出如下:

42

hello,world

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值