yield与return的功能都是返回程序执行结果,但是yield返回执行结果并不中断程序执行,return在返回执行结果的同时中断程序执行。
例如我们经常使用for循环来遍历:
def func():
test_list = []
for i in range(10):
test_list.append( i )
return i
fun = func()
print(fun) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
def func():
for i in range(10):
yield i
fun = func()
print(fun) # <generator object func at 0x7f4cb265bb48>
print(next(a)) # 0
print(next(a)) # 1
print(next(a)) # 2
可以看出,yield 输出的是一个对象,相当于是一个容器,想取什么数据就取出什么,而return 只会返回一个值,且return后面的代码不会执行。