初步理解Python中的yield

yield 是一个类似 return 的关键字,迭代一次遇到yield时就返回yield后面(右边)的值。重点是:下一次迭代时,从上一次迭代遇到的yield后面的代码(下一行)开始执行。

例子:转自https://blog.csdn.net/appleml/article/details/54097690

def yield_test(n):
    for j in range(n):
        yield call(j)
        print("j=",j)

    print("do something.")
    print("end.")

def call(k):
    return k * 2

for i in yield_test(5):
    print('----------')
    print("i=",i)

执行顺序:

for i in yield_test(5):调用yield函数,把结果返给i

def yield_test(n):进入yield_test.n=5

for j in range(n):进入yield_test的for循环,从0开始.n=5,j=0

yield call(j):调用call函数.j=0

def call(k):进入def call(k).k=0

return k * 2:返回k*2的结果.k=0

for i in yield_test(5):将结果返回给i.i=0

print('----------') 打印一串-

print("i=",i) 打印i的值.i=0

print("j=",j) 打印j的结果.j=0

for j in range(n):循环第二次.j=1,n=5

yield call(j):调用call函数.j=1

def call(k):进入def call(k).k=1

return k * 2:返回k*2的结果.k=1

for i in yield_test(5):将结果返回给i.i=2

print('----------') 打印一串-

print("i=",i) 打印i的值.i=2

print("j=",j) 打印j的结果.j=1

进入下一次yield_test里的循环,以此类推

结果:

----------
i= 0
j= 0
----------
i= 2
j= 1
----------
i= 4
j= 2
----------
i= 6
j= 3
----------
i= 8
j= 4
do something.
end.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值