#!/usr/bin/env python# -*- coding:utf-8 -*- # yield x相当于return 控制的是函数的返回值# 在定义生成器函数的yield时,可以给yield赋值# x = yield的另一个特性,接收send传过来的值,赋给x# send类似于__next__()方法,不过生成器刚启动时,不能send一个不为None的值,# 所以先要运行__next__()方法现启用生成器。 ‘‘‘def test(): print(‘开始生产~~~‘) fir = yield 1 print(‘第一个‘,fir) yield 2 t = test()re = t.__next__() #开始启动生成器函数,re表示yield 后的值,该处代表 1print(re) #>>> 1res = t.send(1) #继续调用生成器函数,并将1传值给fir;res表示后面的yield返回值,该该处代表2print(res) #>>> 2‘‘‘# 如果模拟生产包子和吃包子,可以如下: import timedef eat(name): print(‘我是【%s】,我要开始吃包子了~‘%name) while True: baozi = yield time.sleep(1) print(‘【%s】很开心的把%s吃掉了~‘%(name,baozi)) def product(): eat_list = [‘A‘,‘B‘,‘C‘] for i in range(len(eat_list)): c = eat(eat_list[i]) c.__next__() for b in range(5): c.send(‘包子%d‘%b)product()
原文地址:https://www.cnblogs.com/Meanwey/p/9741271.html
时间: 2024-10-07 09:32:38