十一、yield生成器
1、对比range 和 xrange 的区别 >>> print range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> print xrange(10) xrange(10) 如上代码所示,range会在内存中创建所有指定的数字,而xrange不会立即创建,只有在迭代循环时,才去创建每个数组。 ========================================================== def func1(): return 1 return 2 return 3 print (func1()) 问以上结果会打印什么?答案:只有1(因为当它遇到return时代表它的生命周期已经结束,就不会往下再走了)。 现在我把它改变一下,变成这样,问以上结果会打印什么? 答案:<generator object func1 at 0x02CF02D8> 告诉你它是一个生成器,只有你通过for循环才能逐个去调用它 def func1(): yield 1 yield 2 yield 3 print (func1()) for i in func1(): print (i) 返回 1 2 3 就像 for i in xrange(10) print (i) 返回 0 1 2 3 4 5 6 7 8 9 因为xrange也是一个生成器 ===