yield和return在直观上都是“返回值”的作用。
首先比较下return 与 yield的区别:
return:在程序函数中返回某个值,返回之后函数不在继续执行,彻底结束。
yield: 带有yield的函数是一个迭代器,函数返回某个值时,会停留在某个位置,返回函数值后,会在前面停留的位置继续执行, 直到程序结束
案例:
返回100以内所有的奇数。
import random
def GenerateCorrelated(n):
x=1
yield x
for _ in range(n-1):
x=x+2
yield x
GenerateCorrelated(100)
输出:
<generator object GenerateCorrelated at 0x1A28A530>
返回一个迭代器。
list(GenerateCorrelated(100))
以list返回所有元素的列表。