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的函数是有状态的函数,后面的调用会基于前面的调用状态继续执行
posted @ 2022-12-20 14:34  小杨的冥想课  阅读(90)  评论(0编辑  收藏  举报