在循环行中调用函数并将返回值存储到变量然后在循环中使用?

时间:2013-01-22 22:23:23

标签: python loops while-loop

我想做以下事情:

while myFunc() as myVar:
    print myVar

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

我想避免的事情:

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

2 个答案:

答案 0 :(得分:4)

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

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

这相当于以下内容:

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

来自iter()的文档:

  

如果给出第二个参数 sentinel ,则 o 必须是可调用的   宾语。在这种情况下创建的迭代器将使用no调用 o   每次调用next()方法的参数;如果返回的值是   等于哨兵,StopIteration将被提升,否则为值   将被退回。

答案 1 :(得分:0)

使用返回该值的生成器。

for myVal in myFunc():
 print myVal

这是收益率声明的组合。