私は次のようなことをしたいです:
while myFunc() as myVar:
print myVar
基本的には、ループラインで関数を呼び出すだけで、値を返し、その値に応じてループを続行しますが、ループ内でその値を使用できるようにしたいので、関数を呼び出す必要はありません。 2回目。
避けたいこと:
while myFunc():
myVar = myFunc()
print myVar
私は次のようなことをしたいです:
while myFunc() as myVar:
print myVar
基本的には、ループラインで関数を呼び出すだけで、値を返し、その値に応じてループを続行しますが、ループ内でその値を使用できるようにしたいので、関数を呼び出す必要はありません。 2回目。
避けたいこと:
while myFunc():
myVar = myFunc()
print myVar
iter()
これは、組み込み関数の 2 つの引数バージョンを使用して実現できます。
for myVar in iter(myFunc, sentinel):
print myVar
これは次と同等です。
while True:
myVar = myFunc()
if myVar == sentinel:
break
print myVar
のドキュメントからiter()
:
2 番目の引数sentinelが指定されている場合、 oは呼び出し可能なオブジェクトでなければなりません。この場合に作成された反復子は、そのメソッドの呼び出しごとに引数なしでoを呼び出します。
next()
返される値がセンチネルと等しい場合は値StopIteration
が上がり、そうでない場合は値が返されます。
その値を返すジェネレーターを使用します。
for myVal in myFunc():
print myVal
これは、yield ステートメントの組み合わせです。