Warum können Sie die umgebenden Klammern für Generatoren in Python weglassen, wenn Sie sie in eine Funktion übergeben?
-
24-10-2019 - |
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
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