参考: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