首页 > 代码库 > Python——yield生成器

Python——yield生成器

1、对比range和xrange区别

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> xrange(10)
xrange(10)

xrange在迭代循环时创建

2、

yield生成器:

        记住上一次操作,下次再执行时,继续执行

 

def func1():
     yield 1
     yield 2
     yield 3

for i in func1():
     print i

如果使用print的话,只会打印出1,后续的2和3不会显示。

使用yield时,每次循环调用到yield时,会暂停,然后再次调用时继续执行。从而会依次显示出1,2,3

xrange的实现如下所示:

def mrange(arg):
     seed = 0
     while True:
         seed = seed + 1
         if seed > arg:
             return
         else:
             yield seed

for i in mrange(4):
     print i

Python——yield生成器