码迷,mamicode.com
首页 > 其他好文 > 详细

生成器表达式(待补充)

时间:2018-05-30 19:25:54      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:方法   方式   ext   传值   作用   生成器   有一个   none   send   

 

yield表达式形式应用的定义
在一个生成器函数内,将yield赋值给一个变量,这就是yield的表达式形式,也叫生成器的表达式形式

send方法定义
yield的表达式形式下面有一个send方法,它的作用和next方法是一样的,都是在触发函数继续往下走,除了具有next功能外,还有传值的效果,send传
值的方式是先把要传的值交给yield,再由yield赋值给事先定义的变量名,最后才触发next效果

def foo():
    print(start)
    while True:
        x=yield
        print(value:,x)

g=foo()#得到生成器

next(g)#初始化生成器
打印start,但此时函数位置已经在yield暂停了
g.send(None)#把None传给yield,相当于不传值,只有next效果,等同于next(生成器变量),一般用于生成器表达式的初始化操作

g.send(1)#由send现将1传给上一次yield暂停的位置,再由yield把1赋值给x,最后函数在接着往下走,直到碰到yield函数才暂停


yield表达式形式的初始化
定义
生成器一定要走到一个暂停的位置,然后才能send传值,因为send的特性是基于一个已经暂停的yield进行传值然后再接着往下走
如果对生成器表达式形式不进行初始化操作而直接进行传值则会报以下错误
TypeError: cant send non-None value to a just-started generator
类型错误:不能将非零值发送给刚刚启动的生成器
解决方法:必须先初始化才能传值,初始化只有两个方法
send(None)给生成器表达式或next(g)

 

生成器表达式(待补充)

标签:方法   方式   ext   传值   作用   生成器   有一个   none   send   

原文地址:https://www.cnblogs.com/z-x-y/p/9112546.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!