首页 > 代码库 > yield用法

yield用法

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的函数