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

Я был просто экспериментируя на 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
6
задан Darren Yin 25 January 2011 в 22:15
поделиться