Python 中的三大利器包括: 迭代器、生成器、装饰器,利用好它们才能开发出最高性能的代码,涉及到的内置模块 itertools 提供迭代器相关的操作。

迭代器

迭代是Python最强大的功能之一,是访问集合元素的一种方式。
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()
字符串,列表或元组对象都可用于创建迭代器:

创建一个迭代器

把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__() 。
如果你已经了解的面向对象编程,就知道类都有一个构造函数,Python 的构造函数为 __init__(), 它会在对象初始化的时候执行。
__iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法并通过 StopIteration 异常标识迭代的完成。
__next__() 方法(Python 2 里是 next())会返回下一个迭代器对象。

实例:创建一个返回数字的反向迭代器,初始值为N,逐步递减 1:

class Descend():def __init__(self,N):self.N=Nself.a=0def __iter__(self):return selfdef __next__(self):while self.a<self.N:self.N-=1return self.N+1raise StopIteration>>> [i for i in Descend(10)]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> 

StopIteration

StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况,在 __next__() 方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代。

生成器

装饰器

Python 三大利器:迭代器、生成器、装饰器相关推荐

  1. Python基础 day4 迭代器生成器 装饰器 Json pickle 数据序列化 软件目录结构规范 作业:ATM项目开发...

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 列表生成器 1.列表生成式,迭代器&生成器 列表生成式 孩子, ...

  2. python学习day-8 迭代器 生成器 装饰器

    http://www.cnblogs.com/linhaifeng/articles/7580428.html 迭代器#迭代器即迭代的工具,那什么是迭代呢?#迭代是一个重复的过程,每次重复即一次迭代, ...

  3. 迭代器 生成器 装饰器 匿名函数

    迭代器 生成器 装饰器 匿名函数 #可迭代对象:列表.字典.集合.字符串:能够被for 循环遍历的对象# 数字类型不可迭代:# name="wangyifei"# for i in ...

  4. 迭代器/生成器/装饰器 /Json pickle 数据序列化

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...

  5. Day4 - Python基础4 迭代器、装饰器、软件开发规范

    Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1. ...

  6. python迭代器生成器装饰器

    基本概念 学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895 817 687有任何不懂的都可以在里面交流,还有很好的视频教程pdf学习资料,大家一起学习交流! 1.容器 ...

  7. Python 3 学习——函数扩展and迭代器生成器装饰器

    Python 学习的第九小节 写此博客 是为了激励自己,并且将自己的心得以及遇到的问题与人分享 一.学习笔记 1. 高阶函数 函数名可以作为函数参数输入 .可以进行赋值.还可以作为返回值. 2.作用域 ...

  8. python 生成器装饰器_4.python迭代器生成器装饰器

    基本概念 1.容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中.通常这类数据结构把所有的元 ...

  9. python 生成器装饰器_七.python迭代器生成器装饰器

    1.迭代器 1.1 什么是可迭代对象(Iterable)? 定义:可以直接作用于for循环的对象统称为可迭代对象,即Iterable. 可迭代对象包括: 1.集合数据类型:如list.tuple.di ...

  10. day04 迭代器生成器装饰器

    目录   1.迭代器 2.生成器 3.推导式 4.匿名函数 5.内置函数 6.递归 7.闭包 8.装饰器 一.迭代器 特点: 1. 省内存 2. 只能向前. 不能反复 3. 惰性机制 让不同的数据类型 ...

最新文章

  1. synchronized同时对原子性、可见性、有序性的保证
  2. Keil uVision5 下载程序 add flash programming algorithm选项缺少需要的下载算法的解决办法
  3. [LeetCode] Search Insert Position 搜索插入位置
  4. Spring【依赖注入】就是这么简单
  5. 【问链-EOS公开课】第十四课 EOS从单签名到多签名
  6. ubuntu14.04 通过PPA 安装ffmpeg
  7. Asterisk权威指南/第五章 用户设备配置
  8. android磁场传感器页面布局在哪,基于磁场检测的寻线小车传感器布局研究
  9. ffmpeg 如何音视频同步
  10. javascript函数防抖Debounce
  11. EPICS Archiver Appliance在Debian11下安装文档
  12. 爬虫实用分析工具网址
  13. 个人空间岁末大回报活动12月16日获奖名单
  14. vue3+ts+vant移动端H5项目搭建
  15. 1.2 聪明的投资者:投资与投机(聪明投资者的预期收益)
  16. rs485数据线接反_数据信号TXD、RXD 发送和接受怎么区分正负极呢? 现在数据信号TXD、RXD需接RS485+ RS485-信号该怎么接呢...
  17. 服务器主机和显示器怎么连接,主机跟显示器怎么连接
  18. exercises of nginx and images,more efforts, more happiness
  19. Unix波澜壮阔的发展史
  20. Hadoop支持的文件格式之Text

热门文章

  1. NAS论文笔记:代理模型篇:NSGA Net V2: Evolutionary Multi-Objective Surrogate-Assisted Neural Architecture Sear
  2. 【莫安迪原创摄影作品】深圳最美夕阳-烟云成画
  3. vscode Couldn‘t start client Rust Language Server
  4. 巧用位运算实现大小写转换
  5. 一文带你走进网络编程
  6. 雷电9模拟器安装抓包工具whistle证书
  7. 互联网行业中最常用的数据库——MySQL 索引、事务与存储引擎
  8. 【小技巧】一种简单的办法在verilog中处理小数运算
  9. 【凝水成冰】记学生事务系统的结构化
  10. ARP协议和NDP协议分析