Python3异步编程:yield与yield from

yield

yield把函数变为generator
gennerator需要收到一次send(None)或者next才开始执行函数
函数执行了yield语句后,会挂起,直到外部调用send传递一个对象作为yield语句返回值,则继续函数
generator中如果执行return语句也会向常规函数一样终止
yield会执行完下一条语句后,挂起这个方法,保存该语句结果
直到外部调用next或者send才继续方法的执行
比如下面例子

def Test3():
    print("Test3 in")
    for i in range(3):
        s = yield print("do yield test3 %s" % i)
        print("Test3 get %s" % s)
    print("Test3 end")

print("start3")
t = Test3()
print("start3 send")
t.send(None)
print("start3 send end")
for i in range(2):
    print("start3 range %s" % i)
    t.send(i)
print("start3 range end")
"""
--------------------------OUTPUT---------------------
start3
start3 send
Test3 in
do yield test3 0
start3 send end
start3 range 0
Test3 get 0
do yield test3 1
start3 range 1
Test3 get 1
do yield test3 2
start3 range end
"
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值