yield
yield与return的关系
- yield和return类似,在函数中用来返回值给调用者
- 使用return的函数是没有状态的,一旦return了,函数就结束了。
- 使用yield的函数是有状态的,返回一个值后,还可以继续调用,直到所有yield都被用完。
def have_some_wine():
print('先开一瓶酒,共有700毫升')
wine = 700
while wine > 0:
# 取酒
if wine > 200:
get_wine = 200
wine = wine - 200
else:
get_wine = wine
wine = 0
# 把酒送给客人
print('您的酒来了:200毫升')
yield get_wine
# 开一瓶酒
mywine = have_some_wine()
# 可以多次来喝,直到喝光为止
for i in mywine:
print(f'我今天喝{i}毫升')
'''输出结果:
开了一瓶酒,共有700毫升
您的酒来了:200毫升
我今天喝200毫升
您的酒来了:200毫升
我今天喝200毫升
您的酒来了:200毫升
我今天喝200毫升
您的酒来了:200毫升
我今天喝100毫升
'''
总结:
- yield类似于return,在函数中返回值给调用者
- 使用了yield的函数是有状态的函数,后面的调用会基于前面的调用状态继续执行
记录学习的点点滴滴