2013-01-22 46 views
3

我想要做的东西像下面这样:在循环中调用函数并将返回值存储到变量中,然后在循环中使用?

while myFunc() as myVar: 
    print myVar 

基本上,只要打电话到循环线,将返回一个值,然后继续循环取决于值的功能,但我也希望能够在循环中使用该值,我宁愿不必第二次调用该函数。

我想什么来避免:

while myFunc(): 
    myVar = myFunc() 
    print myVar 
+1

不,对不起。您必须找到另一种语言,Python不会在表达式中执行任务(太容易造成错误)。 –

回答

3

您可以使用iter()内置函数的两个参数版本做到这一点

如果第二个参数哨兵,给出,则o必须是可调用的 对象。在这种情况下创建的迭代器将调用,而对于每个调用next()方法的参数都不会有 参数;如果返回的值是 等于哨兵,则将提高StopIteration,否则将返回值 。

+0

很酷!看起来这正是我正在寻找的。谢谢! – Mathieson

0

使用发电机,其返回值。

for myVal in myFunc(): 
print myVal 

这是yield语句的组合。

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

这等同于以下:

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

从文档为iter()

+0

为什么不是gen-exp? (for myVal in(myFunc()for _ in itertools.count()):' – Bakuriu

相关问题