return语句
在函数中,return语句就意味着整个函数的终止并返回一个值,返回之后函数就不继续往下执行了
yield语句
而在函数中,如果是通过yield语句返回,那么yield会返回一个值,返回之后函数还可以继续往下执行
1 | def test(n): |
yield和return的区别
带yield关键字的函数是一个生成器,而不是一个函数。这个生成器有个next函数,相当于“下一步”的函数,这一次的next是默认从上一次next停止的地方继续执行,所以调用next函数的时候,生成器并不会从foo函数开始执行,只是接着上一步停止的地方开始执行,遇到yield后,return了一个此步生成的数据,此步就结束了
send函数
send函数的主要功能是给生成器传递一个初始参数值,使得生成器可以拿到这个值,并将它赋值给yield开始的位置,然后继续单步执行一次
1 | def test(n): |