8

ジェネレーターを関数の引数として渡すためのさまざまな構文を使用して Python で実験していたところ、これを行っていたにもかかわらず、

>>> sum((j for j in xrange(5)))
10

これも同様に機能します:

>>> sum(j for j in xrange(5))
10

これは Linux 上の Python 2.6.6 でテストされています。ボンネットの下で何が起こっているのですか?それは単なる構文糖ですか?結局のところ、通常、ラップされていないジェネレーターはインタープリターには解読できません。

>>> j for j in xrange(5)
  File "<stdin>", line 1
    j for j in xrange(5)
        ^
SyntaxError: invalid syntax
4

1 に答える 1

6

Pythonの文法を読むことで、その質問に答えられると確信しています。

文法よりも平易な英語を好む場合:PEP-289がそれを説明しています。

于 2011-01-25T22:16:54.437 に答える