Python学习之生成器

参考:http://www.jb51.net/article/15717.htm

# coding=utf-8_
_author__ = "leaves"




def addlist(alist):
    for i in alist:
        yield i + 1




alist = [1, 2, 3, 4, 5]
for x in addlist(alist):
    print x;


# 包含yield的函数
def h():
    print 'To be brave'
    yield 5


# 没有输出,print没有执行
h()


# yield是一个表达式,此处m的值不是5,后面会有方法获取(yield 5)的值
# m = yield 5


print '------------------1'
# 透过next()语句看原理
def h():
    print "Wen Chuan"
    m = yield 5
    print 'Fighting'




c = h()
c.next()
# 下面会抛异常,由于后面没有yield
# c.next()


# send(msg) 与 next() next相当于send(None) seng可以传递yield表达式的值
print '------------------2'




def h():
    print 'When Chuan'
    m = yield 5  # Fighting!
    print m
    d = yield 12
    print 'We are together!'




c = h()
c.next()
c.send("Fightign!")


# seng(msg)与next()的返回值,他们的返回值很特殊,返回的是下一个表达式的参数
print '------------------3'




def h():
    print 'When Chuan'
    m = yield 5  # Fighing!
    print m
    d = yield 12
    print 'We are together!'




c = h()
m = c.next()
d = c.send("Fighting!")
print 'We will never forget the date', m, '.', d


输出:

"D:\Program Files\Python\python.exe" G:/HelloPython/list/yield.py
2
3
4
5
6
------------------1
Wen Chuan
------------------2
When Chuan
Fightign!
------------------3
When Chuan
Fighting!
We will never forget the date 5 . 12


Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值