4

我想做如下的事情:

while myFunc() as myVar:
    print myVar

基本上,只需在循环行中调用一个函数,该函数将返回一个值并根据该值继续循环,但我也希望能够在循环中使用该值,我宁愿不必调用函数 a第二次。

我想避免的:

while myFunc():
    myVar = myFunc()
    print myVar
4

2 回答 2

4

iter()您可以使用内置函数的两个参数版本来完成此操作:

for myVar in iter(myFunc, sentinel):
    print myVar

这等效于以下内容:

while True:
    myVar = myFunc()
    if myVar == sentinel:
        break
    print myVar

从文档中iter()

如果给定第二个参数sentinel,则o必须是可调用对象。在这种情况下创建的迭代器将在每次调用其方法时调用不带参数的o ;next()如果返回的值等于哨兵,StopIteration将被提升,否则将返回该值。

于 2013-01-22T22:28:43.723 回答
0

使用返回该值的生成器。

for myVal in myFunc():
 print myVal

这是与 yield 语句相结合的。

于 2013-01-22T22:27:28.783 回答