¿Por qué puedes omitir los paréntesis circundantes para generadores en Python al pasarlo a una función?

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

Pregunta

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 también funciona:

>>> 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áctica? Después de todo, generalmente un generador sin envolver 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
¿Fue útil?

Solución

Estoy seguro de leer el gramática de pitón responderá a esa pregunta.

Si prefiere el inglés simple sobre las gramáticas: PEP-289 lo explica.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top