码迷,mamicode.com
首页 > 编程语言 > 详细

【Python】迭代器

时间:2016-12-31 23:00:00      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:需要   协议   而不是   循环   效果   生成   对象   effect   生成器   

对迭代器和生成器的概念一直很混乱,总结一下:

迭代器:

1.所谓的迭代器,就是具有__next__()方法的对象;

2.__iter__()方法返回一个迭代器对象,这个对象必须具有__next__()方法;

3.一个实现了__iter__()方法的对象是可迭代的,一个实现了__next__()方法的对象是迭代器;

4.内置函数iter()从可迭代对象调用__iter__()方法,并返回一个迭代器对象;

5.内置函数next()调用__next__()方法,并向前推进;

6.for循环会自动调用内置函数iter(),获得一个迭代器对象,使用__next__()方法;

7.文件对象自己就是迭代器,生成器的迭代器也是自身,且生成器自动的支持迭代协议;

8.列表等内置对象自身不是迭代器,因为它们支持多次打开迭代器,需要使用内置函数iter()启动迭代器;

9.__iter__()只循环一次,之后还要使用需要创建新的迭代器

10.如果要达到多个迭代器的效果,__iter__()只需替迭代器定义新的状态对象,而不是返回self

11.如果把迭代器对象传给内置函数iter(),那么此函数会把该迭代器返回;如果传给iter()函数的是个容器类对象,那么iter()函数则每次都会返回新的迭代器对象,可以利用这种行为判断输入值是不是迭代器对象本身。

参考资料:Python学习手册

     Python Cookbook

     Effective Python

     Python基础教程

 

【Python】迭代器

标签:需要   协议   而不是   循环   效果   生成   对象   effect   生成器   

原文地址:http://www.cnblogs.com/fcyworld/p/6240278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!