生成器yield,next()与send()
# 把a创建成了一个生成器对象 generator object a = (x * 2 for x in range(10)) print(a) print(next(a)) # 生成器对象调用用next(a),等价于 a.__next__(),生成器一次调用一个 print(next(a)) for i in a: # 生成器是一个可迭代对象 print(i) # 创建生成器的第二种方式 def f(): print("第一次调用") yield 1 print("第二次调用") yield 2 # 也可以用next()方法调用生成器 for f in f(): print(f) # 什么是可迭代对象:就是对象可以被__iter__()这种方式调用的都是可迭代对象 # 斐波拉切生成器 def fbo(f_max): n, f_a, f_b = 0, 0, 1 while n < f_max: # print(f_a) yield f_a f_a, f_b = f_b, f_a + f_b n += 1 fbo = fbo(10) for i in fbo: print(i) # 生成器中send()的应用 def f_send(): print("第一次调用") ser = yield 1 print(ser) print("第二次调用") yield 2 # 使用send()第一次必须值为Nome,send可以在生成器yield前传参数,send是从程序执行上一个yield结束时开始执行 f_send = f_send() f_send.send(None) f_send.send("AAAAAA")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步