m =(i for i inrange(5))print(type(m))# 打印结果(类型) <class 'generator'> 生成器print(next(m))# 打印结果 0definc():for i inrange(5):yield i
print(type(inc))# 打印结果(类型) <class 'function'> 函数print(type(inc())) `` # 打印结果(类型) <class 'generator'> 生成器
g = inc()print(type(g))# 打印结果(类型) <class 'generator'> 生成器print(next(g))# 0for x in g:print(x)# 1 2 3 4print('-----------')for y in g:print(y)# 未打印
defcounter():
i =0whileTrue:
i +=1yield i
c = counter()print(next(c))# 打印 1print(next(c))# 打印 2print(next(c))# 打印 3
计数器
definc():defcounter():
i =0whileTrue:
i +=1yield i
c = counter()# def inner():# return next(c)# return innerreturnlambda:next(c)
g = inc()print(g())# 打印 1print(g())# 打印 2print(g())# 打印 3
斐波那契数列
deffib():
x =0
y =1whileTrue:yield y
x, y = y, x + y
foo = fib()for i inrange(10):# 前10项print(next(foo))
生成器交互
definc():defcounter():
i =0whileTrue:
i +=1
response =yield i
if response isnotNone:
i = response
c = counter()returnlambda x=False:next(c)ifnot x else c.send(0)
foo = inc()print(foo())print(foo())print(foo())print(foo(True))print(foo())print(foo())print(foo())