这是我能想到的最好的方法:
def cfor(first,test,update):
while test(first):
yield first
first = update(first)
def example(blah):
print "do some stuff"
for i in cfor(0,lambda i:i<blah,lambda i:i+1):
print i
print "done"
我希望python对封闭表达式使用语法。
另外,请注意,您只需要定义一次cfor(而不是您的complicated_iterator
函数)。