一、python对生成yield的理解推荐查看这篇
点这里
写的特别好,容易理解
二、作用:合理利用降低程序的复杂度
例子: 比如range方法使用循环是很占内存的,用yield替换降低内存占用
#encoding:utf-8
import sys
print "range对象内存占用:{}".format(sys.getsizeof(range(1000)))
print "xrange对象内存占用:{}".format(sys.getsizeof(xrange(1000))) #xrange 内部是生成器yield实现
#用yield实现range的功能
def test():
def foo(num1):
while num1<1000:
num1=num1+1
yield num1
for n in foo(0):
pass
test()
print "num对象实例化的内存占用:{}".format(sys.getsizeof(100))
结果 :
range对象内存占用:8064
xrange对象内存占用:32
num对象实例化的内存占用:24