2

n回使用する関数発生器を実装しようとしていました。私の考えは、ジェネレーターオブジェクトを作成し、そのオブジェクトを別の変数に割り当て、再割り当てされた変数を関数として呼び出すことでした。例:

def generator:
   [...]
   yield ...

for x in xrange(10):
   function = generator
   print function(50)

print 関数を呼び出すと、それfunction(50)が呼び出されていないことがわかります。代わりに、出力は次のとおり<generator object...>です。この関数をジェネレーター関数に割り当て、この新しい変数をジェネレーター関数として使用することで、この関数を 10 回使用しようとしていました。

どうすればこれを修正できますか?

4

2 に答える 2

5

ジェネレーター関数はジェネレーター オブジェクトを返します。list(gen)それらをに変換するlistか、単に反復する必要があります。

>>> def testFunc(num):
        for i in range(10, num):
            yield i


>>> testFunc(15)
<generator object testFunc at 0x02A18170>
>>> list(testFunc(15))
[10, 11, 12, 13, 14]
>>> for elem in testFunc(15):
        print elem


10
11
12
13
14

この質問では、それについて詳しく説明しています: Python yield キーワードの説明

于 2013-07-21T19:18:59.887 に答える