我想做如下的事情:
while myFunc() as myVar:
print myVar
基本上,只需在循环行中调用一个函数,该函数将返回一个值并根据该值继续循环,但我也希望能够在循环中使用该值,我宁愿不必调用函数 a第二次。
我想避免的:
while myFunc():
myVar = myFunc()
print myVar
我想做如下的事情:
while myFunc() as myVar:
print myVar
基本上,只需在循环行中调用一个函数,该函数将返回一个值并根据该值继续循环,但我也希望能够在循环中使用该值,我宁愿不必调用函数 a第二次。
我想避免的:
while myFunc():
myVar = myFunc()
print myVar
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
将被提升,否则将返回该值。
使用返回该值的生成器。
for myVal in myFunc():
print myVal
这是与 yield 语句相结合的。