4

私は次のようなことをしたいです:

while myFunc() as myVar:
    print myVar

基本的には、ループラインで関数を呼び出すだけで、値を返し、その値に応じてループを続行しますが、ループ内でその値を使用できるようにしたいので、関数を呼び出す必要はありません。 2回目。

避けたいこと:

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

2 に答える 2

4

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が上がり、そうでない場合は値が返されます。

于 2013-01-22T22:28:43.723 に答える
0

その値を返すジェネレーターを使用します。

for myVal in myFunc():
 print myVal

これは、yield ステートメントの組み合わせです。

于 2013-01-22T22:27:28.783 に答える