yield关键字用来定义生成器(Generator),其具体功能是可以当return使用,从函数里返回一个值,不同之处是用yield返回之后,可以让函数从上回yield返回的地点继续执行。也就是说,yield返回函数,交给调用者一个返回值,然后再“瞬移”回去,让函数继续运行, 直到吓一跳yield语句再返回一个新的值。
使用yield返回后,调用者实际得到的是一个迭代器对象,迭代器的值就是返回值,而调用该迭代器的next()方法会导致该函数恢复yield语句的执行环境继续往下跑,直到遇到下一个yield为止,如果遇不到yield,就会抛出异常表示迭代结束。
def test_yield(): yield 1 yield 2 yield (1,2) a=test_yield() print a.next() print a.next() print a.next() print a.next()
结果:
1
2
(1, 2)
Traceback (most recent call last):
File "D:\workspace_python\py201407\yield1.py", line 14, in <module>
print a.next()
StopIteration
1. 包含yield的函数
原文:http://www.cnblogs.com/lxj8495138/p/3840576.html