前面我们都是使用的内置的迭代器, 如果我们自己想实现迭代器应该怎么做?

generator(生成器)是一个简单且强大的创建迭代器的工具.

生成器除了使用yield之外, 就像一个正常的函数, 想在任何地方返回数据, 只需要添加yield就可以了.

我们调用next()函数, 一旦碰到yield则返回yield后的数据, python 并且可以保存当前的状态和位置, 下次再调用next(), 则继续从此处执行.


# 生成能够迭代整数 1-n 的迭代器函数.  调用这个方法, 方法内的代码并不会立即执行, 而是返回一个生成器对象
def foo(n):
    for i in range(1, n):
        yield i  # 每次碰到 yield, 则在此暂停, 并保存这个位置


for i in foo(20):
    print(i)


当然也可以使用下面的方式去使用生成器函数

def foo(n):
    for i in range(1, n):
        yield i  # 每次碰到 yield, 则在此暂停, 并保存这个位置


it = foo(20)

print(next(it))
print(next(it))
Copyright © 李振超 2018 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-02-25 07:12:09

results matching ""

    No results matching ""