yield在函数中的功能类似于return,不同的是yield每次返回结果之后函数并没有退出,而是每次遇到yield关键字后返回相应结果,并保留函数当前的运行状态,等待下一次的调用。如果一个函数需要多次循环执行一个动作,并且每次执行的结果都是需要的,这种场景很适合使用yield实现。
包含yield的函数成为一个生成器,生成器同时也是一个迭代器,支持通过next方法获取下一个值。
yield基本使用:
-
def func(): -
for i in range(0,3): -
yield i -
f = func() -
f.next() -
f.next()

对于生成器,当调用函数next时,将获取生成器yield后边表达式的值;
当执行完最后一次循环后,结束yield语句,生成器会抛出StopIteration异常;
除了next函数,生成器还支持send函数。该函数可以向生成器传递参数。
-
def func(n): -
for i in range(0,n): -
val = yield i -
print val -
f = func(10) -
f.next() -
#f.send(None) -
f.send(2) -
f.send(10) -
print f.next()
本文介绍了Python中生成器的概念及其基本使用方法。通过yield关键字,函数能够记住上一次调用的状态并从中断处继续执行,这使得生成器非常适合用于处理需要多次循环执行的操作。此外,文章还解释了如何通过next和send函数来控制生成器的执行流程。
1281

被折叠的 条评论
为什么被折叠?



