python yield理解_python教程:迭代器,生成器与for循环机制
一:什么是迭代器协议
- 迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代器中的下一项,要么就引起一个stoplteration异常,以终止协议(只能往后走不能往前)
- 可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个_iter_()方法)
- 协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min函数等)使用迭代器协议访问对象。
二:for循环机制
for循环机制的本质:循环所有对象,全部都是使用迭代器协议。
三:什么是生成器
1. 生成器,可以理解为一种数据类型,这种数据类型自动实现了迭代器协议(其他的数据类型需要调用自己内置的_iter_方法),所以生成器就是可迭代对象。
2. 生成器分类:在python中有两种表现形式(python有两种不同的方式提供生成器)
【1】生成器函数:常规函数定义,但是,使用yield语句而不是return语句返回结果,yield语句一次返回一个结果,在每个结果中间,挂起函数的状态,以便于下次从它离开的地方继续执行。
【2】生成器表达式:类似于列表推导,但是生成器返回按需产生结果的一个对象,而不是一次构建一个结果列表。
3.列表解析:
总结:
1.把列表解析的[]换成()得到的就是生成器表达式
2.列表解析与生成器表达式都是一种便利的变成方式,只不过生成器表达式更加节省内存
3.Python不但使用迭代器协议让for循环更加通用。大部分内置函数也是使用迭代器协议访问对象的。例如,sum函数是Python的内置函数,该函数使用迭代器协议访问对象,而生成器实现了迭代器协议,所以,我们可以直接计算一系列值得和:
而不用多此一举的先构造一个列表:
转自:python教程:迭代器,生成器与for循环机制-侵删
python yield理解_python教程:迭代器,生成器与for循环机制相关推荐
- python yield用法_Python中迭代器和生成器的区别?
公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...
- python生成器yield原理_Python的迭代器和生成器 使用实例及yield的使用
<派森>(Python)3.13 win32 英文安装版 类型:编程工具大小:21M语言:英文 评分:8.7 标签: 立即下载 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素 ...
- python列表推导式生成随机数_python 【迭代器 生成器 列表推导式】
python [迭代器 生成器 列表推导式] 一.迭代器 1.迭代器 如何从列表.字典中取值的 index索引 ,key for循环 凡是可以使用for循环取值的都是可迭代的 可迭代协议 :内部含 ...
- python yield理解_Python3 中 Yield 理解与使用
转自Felix文章 Python3 中 yield 对初学者一直是一个难点存在,网上很多教程,噼里啪啦写了很多,也举了很多例子,但是读完之后还是不知所以然,下面问题还是不知道如何回答,内容有点多,有些 ...
- 如何用python生成软件_python中的生成器函数是如何工作的?
1. python中的普通函数是怎么运行的? 当一个python函数在执行时,它会在相应的python栈帧上运行,栈帧表示程序运行时函数调用栈中的某一帧.想要获得某个函数相关的栈帧,则必须在调用这个函 ...
- python self理解_Python列表理解
python self理解 In our previous tutorial we learned about Python Sort List. In this tutorial we will l ...
- Python学习教程(Python学习视频_Python学习路线):Day04循环结构
Python学习教程(Python学习视频_Python学习路线):循环结构 循环结构的应用场景 如果在程序中我们需要重复的执行某条或某些指令,例如用程序控制机器人踢足球,如果机器人持球而且还没有进入 ...
- 我对python的理解_python高级函数以及我对python的理解
常见的高级函数:lambda.map.reduce.filter.list comprehension lambda 匿名函数,限制一个表达式 m = lambda x,y:x+y # 5 m(2,3 ...
- python yield理解_对Python中Yield的理解
看到下面这段程序的时候,有点不明白这个yield到底是个啥东西,看了网上很多的博客,大致理解了yield的含义,所以记录下来. 要说yield首先要说python中的生成器,那么什么是生成器? 假设有 ...
- Python中的装饰器,迭代器,生成器
1. 装饰器 装饰器他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象. 强调装饰器的原则:1 不修改被装饰对象的源代码 2 不修改被装饰对象的调用方式 装饰器的目标:在遵循1和2的 ...
最新文章
- 当代大学生对学习Linux的一点拙见
- XMLHttpRequest Post参数
- qemu运行linux内核很慢,linux – qcow2图像的qemu存储性能非常慢
- CF-525E(E. Anya and Cubes) Meet-in-the-Middle
- 排序算法——归并排序
- 密码学AES算法_S盒_C值搜索
- Linux基础优化方法(三)———字符集编码设置优化
- [转]自定义序列化对象
- Buildroot构建指南——Linux内核
- 【spring源码学习】spring的aop目标对象中进行自我调用,且需要实施相应的事务定义的解决方案...
- Ubuntu 系统安装APACHE PHP MYSQL
- HDU 1007 Quoit Design(分治)
- jQuery中resetForm与clearForm的区别?
- ubuntu定时任务cron 访问网址php
- Opencv结合socket进行视频传输(TCP协议)
- 微信小程序开发进阶篇(mpvue)
- 黑盒测试——因果图法
- 全面公测 | 百度智能云CCE在离线混部功能
- 姜小白的Python日记Day12 迭代器与内置函数
- 生成自签名证书:生成证书和秘钥
热门文章
- 微软威胁情报中心总经理 John Lambert 谈安全
- 3. 密切与企业的合作,构建“产学合作”教育模式
- 在 Linux 系统上源码安装 GTK+ 2.0
- unity物体挂leap交互脚本后在另一个相机视野中看不见问题的解决
- Atitit 高等教育 中产教育 普通教育的异同 目录 1. 顶层精英教育	1 1.1. 领导力 影响力	1 1.2. 国王规范	1 1.3. 宗教领袖	1 1.4. 决策能力	1 1.5. 国际视
- Atitit go语言 golang 艾提拉总结特性优缺点 目录 1. Go 语言最主要的特性:	1 2. 体积大概100M	1 3. 问题	1 3.1. 编译速度和异常控制怎么样	1 3.2.
- 二维码资料 目录 1. 二维码QR Code	1 2. 发展历程	1 3. 特点	2 4. 存储	3 5. 分类	3 5.1.1. 按原理分	3 6. 区别 与条码区别	5 7. 什么是码制?
- Atitit 编程语言的类型系统 目录 1.2. 动态类型语言(Dynamically Typed Language):	1 1.3. 静态类型语言(Statically Typed Languag
- Atitit.ati str 字符串增强api
- Atitit. 软件GUI按钮与仪表盘--web服务器区--获取apache配置文件路径 linux and apache的启动、停止、重启