python中的生成器和迭代器
2015-02-16 17:10
316 查看
个人觉得iterator和yield实现的是相同的功能,只不过iterator需要在类中实现,yield实在函数中实现,二者均会保存状态
生成器也是由迭代器实现的
生成器也是由迭代器实现的
#!/usr/bin/env python #coding: utf-8 #定义三个函数 def Lee(name,age): return 'I am %s,I am %d old' %(name,age) def Marlon(): return 'I am Marlon' def Allen(): return 'I am Allen' function_list= [Lee,Marlon,Allen] #有三个函数的列表 #定义一个生成器 def MyGenerator(*args): for i in args: yield i a=MyGenerator(*function_list) #生成器 print apply(a.next(),('Lee',29)) #执行next()方法,这时会保存现在的执行状态,下一次调用next()方法时,会用到此状态 print apply(a.next()) print apply(a.next()) #为什么yield有next方法? 看下面迭代器的列子,就会明白为什么生成器是由迭代器实现的 #下面是迭代器的例子, 一个类如果实现了__iter__方法,和next()方法,就叫做迭代器 class MyIterator(object): def __init__(self,funcs): self.total_funcs=len(funcs)#记录总共需要执行多少个函数 self.func_list=funcs #记录所有函数 self.step = 0 #记录当前执行到哪一个函数 def __iter__(self): pass def next(self): if self.step < self.total_funcs: #当目前所执行的函数所在的位置小于总的函数个数时 self.step+=1 #step return self.func_list[self.step-1] #执行当前函数 else: raise StopIteration c=MyIterator(function_list) print apply(c.next(),('Lee',29)) print apply(c.next()) print apply(c.next())
相关文章推荐
- python中迭代器、列表解析、生成器的分析比较
- Python 生成器函数,生成器表达式,迭代器,列表解析
- Python 生成器与迭代器
- 可爱的 Python: 迭代器和简单生成器
- Python斐波拉契生成器与迭代器
- python中的迭代器与生成器 .
- Python生成器和迭代器的关系
- python 从yield 学习迭代器和生成器
- python中的迭代器与生成器详解
- Python中的新型构造迭代器和简单生成器
- 强大的Python 迭代器和简单生成器
- Python迭代器与生成器(转)
- python中的迭代器与生成器
- Python的迭代器和生成器
- ·python·用生成器和迭代器实现自己的xrange
- ·python·用生成器和迭代器实现自己的xrange
- python·用生成器和迭代器实现自己的xrange
- python学习笔记之八:迭代器和生成器
- python中的迭代器与生成器
- python迭代器和生成器