python Genarator函数

Generator函数的定义与普通函数的定义没有什么区别,只是在函数体内使用yield生成数据项即可。Generator函数可以被for循环遍历,而且可以通过next()方法获得yield生成的

数据项。

 

def func(n):
	for i in range(n):
		yield i
for i in func(3):
	print i
r=func(3)
print r.next()
print r.next()
print r.next()
print r.next()


0
1
2
0
1
2
Traceback (most recent call last):
  File "generator.py", line 10, in <module>
    print r.next()
StopIteration

yield保留字与return 语句的返回值和执行原理都不相同。yield生成值并不会中止程序的执行,返回值后程序继续往后执行。return 返回值后,程序将中止执行。

 

Generator函数一次只返回一个数据项,占用更少的内存。每次生成数据都要记录当前的状态,便于下一次生成数据。

当程序需要较高的性能或一次只需要一个值进行处理时,使用generator函数。当需要获取一次性一组元素的值时,使用序列。


posted @ 2013-07-22 20:03  xinyuyuanm  阅读(165)  评论(0编辑  收藏  举报