生成器: 带有yield的函数

迭代器:带有next 方法的对象,可以作为内建函数next的参数

迭代对象:带有__iter__方法的对象,__iter__方法返回迭代器

-----------------------------------------------

迭代对象可以用for遍历

生成器是一种迭代器,生成器可以通过send方法与调用方双向沟通

迭代对象和迭代器的联系是:可以对迭代对象使用iter()方法来生成迭代器

----------------------------------------------

总结:

1.迭代器一定是迭代对象,迭代对象不一定是迭代器

2.生成器一定是迭代器,迭代器不一定是生成器

3.使用for...in...来遍历迭代对象是最常用的方式

------------------------------------------------------------

例如: python2里的xrange,python3里的range   是迭代对象,但不是迭代器,其__iter__返回一个生成器

所以不可以next(range(5)), 但是可以 next(iter(range(5)))

最新文章

  1. iOS 疑难杂症— — 收到推送显示后自动消失的问题
  2. Moon.Orm 5.0其他额外配置的讲解
  3. NSURLSession与AFNetworking3.0
  4. 浅析.NET泛型
  5. HTTPS(SSL/TLS) 原理之深入浅出
  6. ReactiveCocoa初步
  7. Linux下的Libsvm使用历程录
  8. STS中搭建SpringMVC工程
  9. webstrom 常用快捷键
  10. hdu1428之dfs+spfa
  11. jenkins+svn+gradle自动化部署笔记
  12. Ansible之 Inventory 资源清单介绍
  13. phpstorm 2017.3.3的安装和破解
  14. 项目:《ssh框架综合项目开发视频》-视频目录和第六天的EasyUI简单讲解
  15. Redis学习--Redis数据类型
  16. centos7 虚拟机安装 以后不能联网问题
  17. iOS 项目架构tabbarController 嵌套 navbarController
  18. php--------对象(object) 与 数组(array) 的转换
  19. ROS的工作模式和ESXI网卡工作模式的关系
  20. 混合编程:error LNK2001: unresolved external symbol

热门文章

  1. C primer plus 5 读书笔记3
  2. Linux:shell脚本字符显示特殊颜色效果
  3. Javascript中的prototype与继承
  4. Linux软件包安装(rpm、yum、apt-get)
  5. 建立dblink(database link)
  6. Linux常用命令总结--不断补充
  7. 动态库中的soname
  8. Spring Could与Dubbo、Docker、K8S
  9. 【转】UBUNTU 下GIT的安装
  10. 增强型for和Iterator学习