我的需求是在一个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条)