Pourquoi pouvez-vous omettre les parenthèses autour des générateurs en Python lors du passage dans une fonction?

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

Question

Je suis juste expérimenté en Python avec une syntaxe différente pour passer dans un générateur comme un argument à une fonction, et je compris que même si je fais cela,

>>> sum((j for j in xrange(5)))
10

fonctionne aussi bien:

>>> sum(j for j in xrange(5))
10

Ceci est testé sur Python 2.6.6 sur Linux. Que se passe sous le capot? Est-ce juste du sucre syntaxique? Après tout, le plus souvent un générateur est déballée indéchiffrable à l'interprète:

>>> j for j in xrange(5)
  File "<stdin>", line 1
    j for j in xrange(5)
        ^
SyntaxError: invalid syntax
Était-ce utile?

La solution

Je lis que le python grammaire répondra à cette question.

Si vous préférez un anglais simple sur grammaires: PEP-289 l'explique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top