Почему вы можете опустить окружающие скобки для генераторов в Python при передаче его в функцию? - PullRequest
6 голосов
/ 26 января 2011

Я просто экспериментировал в Python с другим синтаксисом для передачи генератора в качестве аргумента функции, и я понял, что, хотя я и делал это,

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

это также работает:

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

Это проверено на Python 2.6.6 в Linux.Что происходит под капотом?Это просто синтаксический сахар?В конце концов, обычно развернутый генератор не поддается расшифровке:

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

1 Ответ

4 голосов
/ 26 января 2011

Я уверен, что чтение грамматики python ответит на этот вопрос.

Если вы предпочитаете простой английский язык грамматике: PEP-289 объясняет это.

...