yield vs return
生成器函数类似一个工厂,你说要5个产品,它会在所有产品生成好返回给你,而不是生成一个返回一个,这样相比return函数在内存使用和性能方面都会比较好。
def gensquares(n):
for i in range(n):
yield i**2
#print(list(gensquares(5))) 打印返回是一个list表名一次就返回所有结果
for i in gensquares(5):
print(i,end=':')
def gensquares2(n):
return i**2
print('')
for i in range(0,5):
print(gensquares2(i),end=':')
上面两个函数虽然都用了for循环调用,但是gensquares(5)只调用了一次,而gensquares2(5)调用了5次。运行结果: