python程序的执行过程_python用代码执行流程来详解yield

202008102025.jpg

def h():

print("nihao"),

m = yield 2

print(m)

d = yield 12

print(d)

aaa = yield 13

print("jieshule!!!")

c = h()

m = next(c)

d = c.send("caiqing")

aaa = c.send("xixi")

print(m, d, aaa)

# 控制台输出

# nihao

# caiqing

# xixi

# 2 12 13

# 1、有yield的函数已经成为一个生成器了,并且,直接调用函数是不会执行生成器里面的代码,只有使用next()或者send(),才会被执行生成器里面的函数。

# 2、第一次使用next()的时候,代码会执行到第一个yield(并且获取了yield 返回值 2),也就是本文中的 m = yield 2 ,后面的print m没有被执行,

# 然后 执行d = c.send("caiqing")

# 3、send()可以看来,是用来传递第一个参数,也就是将send()里面的内容传递给m ,也就是m = 参数值,所以print m 最后输出的是send(),括号里面的值。”caiqing“,以此类推。

# 总结,可以理解为,next()和send()其实原理都差不多,都是从当前执行到下一个yield(不包含下一个yield,就算下一个前面有print,但是print 后面没有yield,也不会去执行。)

j_0002.gif

本博客源码Github地址:

请随手给个star,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值