python yield用法

当函数中包含yield时,函数被调用后并没有执行,可以通过next()语句让它执行,直到遇到yield表达式处。如:

def h():

print 'cc'

yield 5

print 'Fighting!'

c = h()

c.next()

c.next()调用后,h()开始执行,直到yield 5,因此输出结果

cc
5

send(msg)和next()

示例:

def h():

print 'Wen Chuan',

m = yield 5  # Fighting!

print m

d = yield 12

print 'We are together!'

c = h()

c.next()  #相当于c.send(None)

c.send('Fighting!')  #(yield 5)表达式被赋予了'Fighting!'

输出结果为:

Wen Chuan Fighting!

需要提醒的是,第一次调用时,请使用next()语句或是send(None),不能使用send发送一个非None的值,否则会出错的,因为没有yield语句来接收这个值。

send(msg) 和next()是有返回值的,它们的返回值很特殊,返回的是下一个yield表达式的参数。比如yield 5,则返回 5。

def h():

print 'Wen Chuan',

m = yield 5  # Fighting!

print m

d = yield 12

print 'We are together!'

c = h()

m = c.next()  #m 获取了yield 5 的参数值 5

d = c.send('Fighting!')  #d 获取了yield 12 的参数值12

print 'We will never forget the date', m, '.', d

输出结果:

Wen Chuan Fighting!

We will never forget the date 5 . 12

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法。 只是粗略的知...
    bjchenli阅读 1,647评论 0 5
  • 介绍一个我个人关于python yield的一点小看法 python代码中, 凡是带yield关键字的都被视为一个...
    小五_555阅读 444评论 0 1
  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 9,921评论 0 23
  • 这是一个孤独的人。有一天,世上许多孤独的人发现了他的孤独,于是争着要同他交朋友。他困惑了:他们因为我的孤独而深信我...
    TigerFeng阅读 284评论 0 1
  • 哈哈哈哈哈哈
    呵呵哈嘿嘿呦阅读 79评论 0 0