Почему вы можете опустить окружающие скобки для генераторов в Python при передаче его в функцию?
-
24-10-2019 - |
Вопрос
Я просто экспериментировал в 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 объясняет это.
Не связан с StackOverflow