Python中的yield详细解释

2023-05-16

Python中的yield详细解释

yield是一个六级词汇,常见意思有“产量,屈服(动词)”。这里的yield大概率解释为一个僻义“缴出”。咱们在什么情况下,会用到yield呢?答:处理大型数据集的时候。
简要理解:yield就是 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后开始。
我们说到了python中的return,它在程序函数中返回某个值,返回之后函数不在继续执行,彻底结束。那你知不知道在python中还有一种返回值的方法,那就是yield。带有yield的函数是一个迭代器,函数返回某个值时,会停留在某个位置,返回函数值后,会在前面停留的位置继续执行,直到程序结束。

yield的作用:返回一个可以用来迭代(for循环)的生成器,它的应用场景通常为一个需要返回一系列值的,含有循环的函数中。

一、迭代器迭代器有两个基本的方法:创建迭代器iter() 和 访问迭代器next()。

可以直接作用于for循环的对象统称为可迭代对象:Iterable

一类是集合数据类型,如list、tuple、dict、set、str等;

一类是generator,包括生成器和带yield的generator function

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

二、生成器

如果列表元素可以按照某种算法推算出来,可以在循环的过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。

三、yield:是一个生成器函数,返回的是一个迭代器

yield表达式:def square():

for x in range(4):

yield x ** 2

square_gen = square()

for x in square_gen:

print(x)

实例:生成器函数# 包含yield关键字,就变成了生成器函数

调用函数并不会执行语句

def foo():
print(‘Starting…’)
while True:
res = yield 4
print(“res:”, res)

下面调用函数并没有执行,可以先将后面的语句注释掉

逐行运行代码观察效果

g = foo()
print(“第一次调用执行结果:”)
print(next(g))
print(“" * 100)
print(“第二次调用执行结果:”)
print(next(g))
print("
” * 100)第一次调用执行结果:
Starting…
4


第二次调用执行结果:
res: None
4


通过迭代器、生成器和yield的介绍,你对yield有所了解了吗?yield的运用离不开迭代器和生成器,迭代器和生成器的运行也离不开yield。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中的yield详细解释 的相关文章

随机推荐

  • Podman设置容器开机自启

    Podman设置容器开机自启 1 podman管理员容器开机自启动 span class token number 1 span span class token operator span span class token operato
  • Linux中tty、pty、pts的概念区别

    http blog sina com cn s blog 638ac15c01012e0v html 基本概念 xff1a 1 gt tty 终端设备的统称 tty一词源于Teletypes xff0c 或teletypewriters x
  • Linux下vnc的安装、使用以及设置开机启动

    安装和使用VNC resbian系统自带realvnc vnc server 启动vnc服务 vncserver 1 xff08 1类似与端口号 xff0c 也可以理解为桌面序号 xff09 关闭vnc服务 vncserver kill 1
  • 单例模式与双重锁

    设计模式中 xff0c 最为基础与常见的就是单例模式 这也是经常在面试过程中被要求手写的设计模式 下面就先写一个简单的单例 xff1a public class Singleton private static Singleton sing
  • tensorflow安装时成功,但引用时提示:Could not load dynamic library ‘cudart64_101.dll‘…… if you do not have a GPU

    问题 xff1a 前几天tensorflow已经安装成功 xff0c 并顺利引用 但是这几天安装了与之冲突的包 xff1b 在重新调整各个包的版本后 xff0c 引用tensorflow提示出错 xff1a gt gt gt import
  • 【Linux】线程实例 | 简单线程池

    今天来写一个简单版本的线程池 1 啥是线程池 池塘 xff0c 顾名思义 xff0c 线程池就是一个有很多线程的容器 我们只需要把任务交到这个线程的池子里面 xff0c 其就能帮我们多线程执行任务 xff0c 计算出结果 与阻塞队列不同的是
  • pandas数据读取与清洗视频05-批量读取excel文件并合并

    本系列课程适用人群 xff1a python零基础数据分析的朋友 xff1b 在校学生 xff1b 职场中经常要处理各种数据表格 xff0c 或大量数据 xff08 十万级以上 xff09 的朋友 xff1b 喜欢图表可视化的朋友 xff1
  • 解决Xp提示未激活状态

    今天不知是什么原因电脑突然桌面背景变为黑色 xff0c 右下角提示 You may be a victim of software counterfeiting xff0c 如下图 所示 解决方法 xff1a xff08 亲测可以解决 xf
  • 微软软件运行库下载 (DirectX,.NET Framework,VC++库..)

    运行库是程序在运行时所需要的库文件 xff0c 运行库中一般包括编程时常用的函数 xff0c 如字符串操作 文件操作 界面等内容 不同的语言所支持的函数通常是不同的 xff0c 所以使用的库也是完全不同的 xff0c 这就是为什么有VB运行
  • 解决笔记本win7系统玩游戏不能全屏办法

    我们在使用笔记本win7系统玩游戏时 xff0c 经常会发现屏幕居中两边有黑条 而有一些台式机的宽屏显示器也经常出现下玩游戏不能全屏的问题 下面系统之家给大家介绍游戏不能全屏问题通用解决方法 1 修改注册表中的显示器的参数设置 Win键 4
  • MouseWithoutBorders无界鼠标安装配置教程

    第一步 xff1a 怎样修改系统计算机全名 xff08 链接教程 xff09 win7如何修改计算机的名字 百度经验 所有虚拟机必须改成不一样的名字 xff08 至关重要 xff09 第二步 xff1a 必须防火墙为开启的状态 xff08
  • 更换 PVE7 软件仓库源和 CT模板(LXC)源为国内源

    PVE7 安装后默认配置的 apt 软件源和 CT LXC 容器模板源均是官方默认的 xff0c 国内使用性能不佳 xff0c 建议替换为 清华 Tuna 提供的国内镜像源 xff0c 速度将有一个较大的提升 如果 pve 官网 iso 镜
  • Proxmox 7.3 换国内源安装

    Proxmox 7 2 默认来自官方的源 xff0c 国内慢的一逼高峰期只有个几KB的速度 xff0c 所以换源 Debian系统源 阿里云源 和中科大proxmox源 一 更换阿里云的源 vi etc apt sources list 替
  • 在x86平台制作龙芯版debian 10系统(mips64el)

    OS ubuntu 18 04 使用debootstrap制作根文件系统会分成两个阶段 第一阶段是 xff0c 使用debootstrap命令来下载软件包 第二阶段是安装软件包 安装debootstap 等相关工具 sudo apt ins
  • Mac安装homebrew报错curl: (7) Failed to connect to raw.githubusercontent.com port 443: Operation的解决办法

    在mac上安装homebrew的时候一般都是在终端输入以下的命令安装的 xff1a bin bash c 34 curl fsSL https raw githubusercontent com Homebrew install maste
  • 深度强化学习-DQN算法

    论文地址 xff1a https arxiv org abs 1312 5602 先讲下在线 xff0c 离线 xff0c 同策略和异策略 同策略 xff08 on policy xff09 和异策略 xff08 off policy xf
  • 再忙也要及时输出

    最近项目比较忙 xff0c 加班到很晚 xff0c 所以没有太多时间来更新博客 在做事情的过程中有过许多想法因为没有及时记录下来 xff0c 已经回想不起来了 xff0c 这是一种损失 不论再忙碌 xff0c 也要去反思和输出自己思考的东西
  • 通过Navicat 连接的数据库 查看数据库密码

    有时候数据库密码弄丢了 但是navicat能正常连接 想着到navicat连接处 复制一个 发现复制不了 可以用下面的方法查看 一 xff1a 导出连接 选择要导出数据库 勾选导出密码 导出的结果 里面打开就有加密后的密码 二 xff1a
  • 波长与频率的关系

    波长的定义 沿着波的传播方向 xff0c 在波的图形中相对平衡位置的位移时刻相同的两个质点之间的距离 横波与纵波的波长 在横波中波长通常是指相邻两个波峰或波谷之间的距离 在纵波中波长是指相邻两个密部或疏部之间的距离 波长在物理中表示为 xf
  • Python中的yield详细解释

    Python中的yield详细解释 yield是一个六级词汇 xff0c 常见意思有 产量 xff0c 屈服 动词 这里的yield大概率解释为一个僻义 缴出 咱们在什么情况下 xff0c 会用到yield呢 xff1f 答 xff1a 处