在python中如何让一个函数分段执行呢??
原因:
最新在写分针的逻辑, 最开始讲一大段代码分成好几个小的函数, 讲函数放进数组中, 每一帧执行一个, 但总是觉得这样写不够优美, 今天看到其他大神的代码,
记录一下思路
前提要理解generator:
适用情况:
- 函数太大, 一帧执行不完
- 不想改变函数, 想在函数执行到某个地方的时候, 去做一些其他的事情
总之就是想对函数的执行流程进行一些更改
测试
import sys
def process(str):
print >> sys.stderr, str
def my_big_func():
process('第一步')
yield
process('第二步')
yield
process('第三步')
yield
process('第四步')
yield
process('第五步')
yield
process('第六步')
yield
my_tick_funcs = my_big_func()
while True:
try:
my_tick_funcs.next()
except StopIteration:
print 'big func end'
break
执行结果:
我们甚至能够用更优美的方法来优化generator的循环
如下所示, 我们使用itertools
的工具, 这样就避免了处理except StopIteration
的循环结束异常
import sys
def process(str):
print >> sys.stderr, str
def my_big_func():
process('第一步')
yield
process('第二步')
yield
process('第三步')
yield
process('第四步')
yield
process('第五步')
yield
process('第六步')
yield
import itertools
my_tick_funcs2 = itertools.chain(my_big_func())
for item in my_tick_funcs2:
pass
总结
可以看到, 其实用到的并不是很奇怪, 或者很深奥的技术, 就是一些基础的知识在实践中应用的结果, 实践出真知