0: yield n #生成一个n值 n -= ;更新日期:2025/1/16.幽灵资源网,磁力链接,云盘下载,BT种子,CPU天梯,显卡天梯,UU加速器,阅读3.0,英雄联盟,怪物猎人,无损音乐网,无损音乐下载网站,无损音乐免费下载,320Kmp3下载,无损音乐免费下载网站,音画欣赏,无损音乐,抖音神曲,发烧大碟,车载歌曲,试音天碟,WMA,WAV+CUE,WAV整轨,FLAC分轨,DSD黑胶,HI-FI试音,SACD-ISO,4K高清,高清电影下载,Magnet,Torrent,BitTorrent,迅雷快传,SUB,SRT,ASS/SSA,SUP,RARBG,TLF字幕,BluRay,x265,x264,DTS-HD,WEBRip,10BIT,HDR,DDP5.1,WEB-DL,1080p高清电影下载,中国高清网,高清电影,720p,1080p,MKV,AVI,蓝光原盘,3D高清,电影下载">
脚本专栏 发布日期:2025/1/16 浏览次数:1
本文实例讲述了python生成器generator用法。分享给大家供大家参考。具体如下:
使用yield,可以让函数生成一个结果序列,而不仅仅是一个值
例如:
def countdown(n): print "counting down" while n>0: yield n #生成一个n值 n -=1 > c = countdown(5) > c.next() counting down 5 > c.next() 4 > c.next() 3
next()调用生成器函数一直运行到下一条yield语句为止,此时next()将返回值传递给yield.而且函数将暂停中止执行。再次调用时next()时,函数将继续执行yield之后的语句。此过程持续执行到函数返回为止。
通常不会像上面那样手动调用next(), 而是使用for循环,例如:
> for i in countdown(5): ... print i ... counting down 5 4 3 2 1
next(), send()的返回值都是yield 后面的参数, send()跟next()的区别是send()是发送一个参数给(yield n)的表达式,作为其返回值给m, 而next()是发送一个None给(yield n)表达式, 这里需要区分的是,一个是调用next(),send()时候的返回值,一个是(yield n)的返回值,两者是不一样的.看输出结果可以区分。
def h(n): while n>0: m = (yield n) print "m is "+str(m) n-=1 print "n is "+str(n) > p= h(5) > p.next() 5 > p.next() m is None n is 4 4 > p.send("test") m is test n is 3 3
希望本文所述对大家的Python程序设计有所帮助。