迭代
生成器对象支持迭代器协议。也就是说,它提供了一个 next()
方法(Python 3.x 中的 __next__()
),用于逐步执行,其 __iter__
方法返回自身。这意味着生成器可以在任何支持通用可迭代对象的语言构造中使用。
# naive partial implementation of the Python 2.x xrange()
def xrange(n):
i = 0
while i < n:
yield i
i += 1
# looping
for i in xrange(10):
print(i) # prints the values 0, 1, ..., 9
# unpacking
a, b, c = xrange(3) # 0, 1, 2
# building a list
l = list(xrange(10)) # [0, 1, ..., 9]