1. generator
#g is a generator and g is iterable
g = (x*x for x in range(5))
for n in g:
print(n)
# or
next(g)
定义generator的另一种方法: 如果一个函数定义中包含yield
关键字,那么这个函数就不再是一个普通函数,而是一个generator
def fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1
>>> f = fib(6)>>> f
变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行
2. decorator
3. iterator