Warum können Sie die umgebenden Klammern für Generatoren in Python weglassen, wenn Sie sie in eine Funktion übergeben?

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

Frage

Ich habe gerade in Python mit unterschiedlicher Syntax als Argument für eine Funktion experimentiert, um einen Generator zu übergeben, und mir wurde klar

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

Das funktioniert auch:

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

Dies wird auf Python 2.6.6 unter Linux getestet. Was ist unter der Motorhaube los? Ist es nur syntaktischer Zucker? Normalerweise ist ein ausgepackter Generator für den Dolmetscher nicht zu entziffern:

>>> j for j in xrange(5)
  File "<stdin>", line 1
    j for j in xrange(5)
        ^
SyntaxError: invalid syntax
War es hilfreich?

Lösung

Ich bin sicher, das lese das Python -Grammatik wird diese Frage beantworten.

Wenn Sie einfaches Englisch gegenüber Grammatiken bevorzugen: PEP-289 erklärt es.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top