当前位置: 首页 > news >正文

python中yield关键字

yield和return
理解一个东西最好的办法就是找一个和它类似的东西,然后再搞清楚它们之间的区别。
yield最类似的东西就是return,因为他们起到了同样的作用:返回值。
看这个return的函数:

def have_some_wine():print('先开一瓶酒,共有700毫升')wine = 700while wine > 0:# 取酒if wine > 200:get_wine = 200wine = wine - 200else:get_wine = winewine = 0# 把酒送给客人print('您的酒来了:200毫升')return get_wine# yield get_winepa = have_some_wine()
print(pa)

在这里插入图片描述
但一旦遇到了return,函数执行就结束了。
下次再调用它,是一次全新的调用,和上一次调用是没有关系的。就算函数中存在多个return也是一样,当遇到第一个return函数也就停止了,
所以我们说它是无状态的。可以理解吧。
yield
假设这样一个场景:我们去酒吧,开了一瓶名贵的啤酒,价值2022元。一次性喝不完,可以保存在酒吧,下次再来喝。
用一个函数来模拟这个开酒的过程:

def have_some_wine():print('先开一瓶酒,共有700毫升')wine = 700while wine > 0:# 取酒if wine > 200:get_wine = 200wine = wine - 200else:get_wine = winewine = 0# 把酒送给客人print('您的酒来了:200毫升')# return get_wineyield get_winepa = have_some_wine()
print(pa)
for i in pa:print(f'我今天喝了{i}')

在这里插入图片描述
注意这个函数的特点:
它没有return关键词,而是用了yield关键词
如果剩下的酒大于200毫升,就用yield关键词返回200毫升
如果剩下的酒小于200毫升,就一次性都返回,这样这个函数的生命周期就结束了。
这就是我说的使用yield的函数是有状态的函数,会记住上次运行的结果,再上次的基础上继续运行或者停止运行。
总结:
yield类似于return,在函数中返回值给调用者。
使用了yield的函数是有状态的函数,后面的调用会基于前面的调用状态继续执行

http://www.lryc.cn/news/122569.html

相关文章:

  • 2023年10款常用的Mac工具合集
  • Python爬虫——requests_cookie登陆古诗文网
  • C++——继承
  • openGauss学习笔记-38 openGauss 高级数据管理-游标
  • Blazor简单教程(1.1):Razor基础语法
  • Leetcode-每日一题【剑指 Offer 25. 合并两个排序的链表】
  • 前端盒子模型
  • 【ARM Cache 系列文章 9 -- ARM big.LITTLE技术】
  • 【BASH】回顾与知识点梳理(十四)
  • 乡村振兴指数与其30余个原始变量数据(2000-2022年)
  • 深入理解MySQL表的操作和管理
  • MATLAB图论合集(一)基本操作基础
  • Redis布隆过滤器的原理和应用场景,解决缓存穿透
  • 数据结构中的英文缩写和易忘的专有名词
  • Unity C# 之 Http 获取网页的 html 数据,并去掉 html 格式等相关信息
  • MODBUS TCP转CCLINK IE协议网关cclink通讯异常的处理方法
  • linux中的ifconfig和ip addr
  • 图像多目标跟踪
  • 42 | 航空公司客户价值分析
  • 第三章 图论 No.11二分图,匈牙利算法与点覆盖
  • Die2Die(D2D)和chip2chip(C2C)之间的高速互联接口
  • JAVA设计模式汇总
  • 【实战讲解】数据血缘落地实施
  • Java课题笔记~ ServletContext
  • 设备取电芯片LDR6328Q
  • Redis 事务、持久化、复制原理分析
  • 初识鸿蒙跨平台开发框架ArkUI-X
  • uniapp开发小程序-分包(微信错误码:800051)
  • n-皇后问题
  • JS如何向数组中添加数组