# 1.生成器函数: 个包含yield关键字的函数就是一个生成器函数。yield可以为我们从函数中返回值,但是yield又不同于return,return的执行意味着程序的结束,调用生成器函数不会得到返回的具体的值,而是得到一个可迭代的对象。每一次获取这个可迭代对象的值,就能推动函数的执行,获取新的返回值。直到函数执行结束。import time
defgenrator_fun1():
a =1print('现在定义了a变量')yield a
b =2print('现在又定义了b变量')yield b
g1 = genrator_fun1()print('g1 : ',g1)#打印g1可以发现g1就是一个生成器print('-'*20)#我是华丽的分割线print(next(g1))
time.sleep(1)#sleep一秒看清执行过程print(next(g1))
# 2.生成器表达式: 将列表推导式的[]换做()即可
g =(i for i inrange(10))print(type(g))
# 1.生成器面试题(-)defadd(n,i):return n+i
deftest():for i inrange(4):yield i
g = test()for n in[1,10,5]:
g =(add(n,i)for i in g)print(list(g))# 2.生成器面试题(二)defdemo():for i inrange(4):yield i
g=demo()
g1=(i for i in g)
g2=(i for i in g1)