首页 > 其他分享 >yield

yield

时间:2022-12-20 14:45:42浏览次数:31  
标签:200 return yield 酒来 毫升 wine

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的函数是有状态的函数,后面的调用会基于前面的调用状态继续执行

标签:200,return,yield,酒来,毫升,wine
From: https://www.cnblogs.com/yangzilaing/p/16994136.html

相关文章

  • yield解析你要知道的源自IBM
    您可能听说过,带有yield的函数在Python中被称之为generator(生成器),何谓generator?我们先抛开generator,以一个常见的编程题目来展示yield的概念。如何生成斐波那契數......
  • PHP的生成器yield
    官方解释yieldyield生成器是php5.5之后出现的,官方文档这样解释:yield提供了一种更容易的方法来实现简单的迭代对象,相比较定义类实现Iterator接口的方式,性能开销和复杂性大......
  • yield函数
    20221123为什么引入yield节省内存,即用即取每次调用,执行到yield行return一个值,停止运行函数。下次调用,从yield的下一行接着执行。deffoo():print("starting..."......
  • yield_from
    final_result={}defsales_sum(pro_name):total=0nums=[]whileTrue:x=yieldprint(pro_name+"销量:",x)ifnotx:......
  • 巨蟒python全栈开发-第12天 生成器函数 各种推导式 yield from
    一.今日主要内容总览(重点)1.生成器(目的:帮助我们创建对象)(1)生成器的本质就是迭代器(2)一个一个的创建对象(3)创建生成器的方式:1.生成器函数......
  • Python用yield form 实现异步协程爬虫
    很古老的用法了,现在大多用的aiohttp库实现,这篇记录仅仅用做个人的协程底层实现的学习。争取用看得懂的字来描述问题。1.什么是yield如果还没有怎么用过的话,直接把yield......
  • python Tips ----- 类型转换String、写入/追加文件、正则表达式字符、yield关键字
      类型转换String写入/追加文件 正则表达式字符  yield关键字  ......
  • C# ES6 yield的实现原理
    我们先看es6里的是这样子://Generator函数function*chain(){yield'a';console.log('sss');yield'b';yield'c';return'end';}varexp=cha......
  • Python yield 使用浅析
    之前了解了生成器的概念,带有yield的函数在Python中被称之为generator(生成器),那么应该什么时候使用呢?举个例子:简单输出斐波那契數列前N个数deffab(max):n,a,b=......
  • python yield 会什么打印none?
     看一个小例子:cattest.pydefgen1():foriinrange(10):x=yieldiprint("x=%s"%x)这段代码执行结果如下:>>>importtestast>>>......