iteradores - ¿Por qué se puede omitir el paréntesis que rodea a los generadores en Python al pasarlo a una función?
que es un iterable en python (1)
Estaba experimentando en Python con una sintaxis diferente para pasar en un generador como argumento para una función, y me di cuenta de que, aunque he estado haciendo esto,
>>> sum((j for j in xrange(5)))
10
esto funciona también:
>>> sum(j for j in xrange(5))
10
Esto se prueba en Python 2.6.6 en Linux. ¿Qué está pasando debajo del capó? ¿Es solo azúcar sintáctico? Después de todo, generalmente un generador no envuelto es indescifrable para el intérprete:
>>> j for j in xrange(5)
File "<stdin>", line 1
j for j in xrange(5)
^
SyntaxError: invalid syntax
Estoy seguro de que leyendo la gramática de Python responderá a esa pregunta.
Si prefiere inglés simple sobre gramáticas: PEP-289 lo explica.