协程:可以理解为一个可以暂停执行的函数
协程的实现:yield返回,send调用
def fun():
print("start")
x= yield
print("return",x)
s=fun()
print(1)
next(s) #预激
print(2)
s.send("swallow")
协程的四个状态
- Inspect. getgeneratorstate(…)函数确定,该函数会返回下述字符串中的一个:
- GEN_CREATED:等待开始执行
- GEN_RUNNING:解释器正在执行
- GEN_SUSPENED:在 yield表达式处暂停
- GEN_CLOSED:执行结束
yield from:
- 调用协程为了得到返回值,协程必须正常终止
- 生成器正常终止会发出 Stoplteration异常,异常对象的 vlaue属性保存返回值
- yield from从内部抽获 Stoplteration异常
def g():
for i in 'ab':
yield i
print(list(g())
def new_g():
yield from "ab"
print(list(new_g())