初步了解协程
def eater(): print('start to eat') while True: food=yield print('is eating food:%s'%food) def producer(): dog=eater() next(dog) # 先next一次唤醒协程函数 #然后下面的操作都是dog.send(值) food1='北京烤鸭' food2='鱼香肉丝' dog.send(food1) dog.send(food2) producer() 输出结果: start to eat is eating food:北京烤鸭 is eating food:鱼香肉丝
如果有多个多个协程函数都需要初始化的话,我们用装饰器
def init(func): def warpper(*args,**kwargs): g=func(*args,**kwargs) next(g) return g return warpper @init #eater=init(eater) #eater=warpper def eater(): print('start to eat') while True: food=yield print('is eating food:%s' % food) e=eater()#e=warpper() e.send('北京烤鸭') 输出结果: start to eat is eating food:北京烤鸭
如果我们在写项目的时候,并且有多个协程函数,我们需要写注释,该怎么写:
错误示例:
def init(func): def warpper(*args,**kwargs): '我是warpper函数' g=func(*args,**kwargs) next(g) return g return warpper @init #eater=init(eater) #eater=warpper def eater(): '我是eater函数' print('start to eat') while True: food=yield print('is eating food:%s' % food) print(help(eater)) 输出结果: Help on function warpper in module __main__: warpper(*args, **kwargs) 我是warpper函数 None 我们看的是eater函数的帮助信息,返回的却是warpper函数信息的帮助