我想做以下事情:
while myFunc() as myVar:
print myVar
基本上,只需在循环行中调用一个函数,该函数将返回一个值,并根据该值继续循环,但我也希望能够在循环中使用该值,而我宁愿不必调用功能第二次。
我想避免的事情:
while myFunc():
myVar = myFunc()
print myVar
答案 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
这是收益率声明的组合。