生成器可用于实现协程:
# 创建并提高生成器到第一产量 def coroutine(func): def start(*args,**kwargs): cr = func(*args,**kwargs) next(cr) return cr return start # 协程示例 @coroutine def adder(sum = 0): while True: x = yield sum sum += x # 示例使用 s = adder() s.send(1) # 1 s.send(2) # 3
协程通常用于实现状态机,因为它们主要用于创建需要状态正常运行的单方法过程。它们以现有状态进行操作,并返回操作完成时获得的值。