返回for 循环里面的变量,保持for循环不退出, goto或yield

我的需求是在一个while(1)循环中一直读取摄像头的值,并返回里面的一个变量值,但同时保持循环一直执行,查了很多资料,发现大部分都没有用,摸索了2个小时,终于找到了方法。那就是用yield,goto只能在函数内跳转,所以goto解决不了该问题。

1. 先说一下goto吧,比较简单,就是通过跳转来实现,但仅在同一个函数内有效。

使用前先安装goto:  pip install goto-statement

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from goto import with_goto
 

@with_goto
def range(start, stop):
    i = start
    result = []
 
    label.begin
    if i == stop:
        goto.end
 
    result.append(i)
    i += 1
    goto.begin
 
    label.end
    return result


if __name__=="__main__":
    print(range(1, 5))

2. 生成器yield,  它可以吧fab函数内循环中的值传给test,并再次传给main,我用了两次,跑几下看看效果就懂了

def fab(): 
    a= 1
    while (1): 
        print("---",a)
        yield a      # 使用 yield
        a+=2
        if a>100:
            return 0

def test():
    for b in fab():
        b+=3
        yield b
 

def main():
    for c in test():
        print(c)

main()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值