1

今日、メモリを節約するためにジェネレーターイテレーターなどを学習していますが、必要に応じてリストをメモリにダンプするよりも、必要に応じて評価する方がよいと思うので、ジェネレーターの下のような簡単なテストを行います。

def test(*args):
    for i in args:
        yield i

以下のように使用すると、目的の効果が得られます。

for i in test(range(10)):
    print i

そのような出力で

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

しかし、この範囲は目的を無効にする関数にすべての数値をダンプするので、以下のように xrange を試しました

for i in test(xrange(10)):
    print i

このようなかなり驚くべき出力が得られます

xrange(10)

しかし、xrangeは反復時にのみ評価されるため、別の方法で見ると、そのように強制しようとします

for i in ye(*xrange(10)):
    print i

そして、私はこのような出力を得ました

o
1
.
.

誰かが詳細に何が起こっているのか説明できますか

4

1 に答える 1