Perché si possono omettere le parentesi circostanti per i generatori in Python quando si passa in una funzione?

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

Domanda

Mi stavo sperimentando in Python con sintassi diversa per il passaggio in un generatore come argomento di una funzione, e mi sono reso conto che, anche se ho fatto questo,

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

Questo funziona come bene:

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

Questa è testato su Python 2.6.6 su Linux. Che cosa sta succedendo sotto il cofano? È solo zucchero sintattico? Dopo tutto, di solito un generatore di scartare è indecifrabile per l'interprete:

>>> j for j in xrange(5)
  File "<stdin>", line 1
    j for j in xrange(5)
        ^
SyntaxError: invalid syntax
È stato utile?

Soluzione

Sono sicuro che leggendo il pitone grammatica risponderà a questa domanda.

Se si preferisce un inglese su grammatiche: PEP-289 lo spiega.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top