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

StackOverflow https://stackoverflow.com/questions/4799459

Вопрос

Я просто экспериментировал в 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
Это было полезно?

Решение

Я уверен, что читаю Python Grammar ответит на этот вопрос.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top