一、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