2013-06-11 10 views
5

Mi sto cimentando in python e ho avuto una domanda sugli asterischi. So che essi siano utilizzati per gli argomenti in chiamate di funzione, ma ho visto frammenti di codice che li utilizzano al di fuori di schede funzionali (dico per esempio, in una tupla di 5 gradi, estrarli in variabili quali:Asterici al di fuori delle chiamate di funzione

first, *middle, last = grades

Ogni volta che provo ad usare gli asterischi in questo contesto/contesti su argomenti di una chiamata di funzione, ottengo sintassi non valida nell'interprete. mi manca qualcosa qui?

risposta

10

Python 3 aggiunto tuple esteso l'estrazione con il supporto per uno jolly, vedere PEP 3132:

*start, tail = ... 
head, *middle, tail = ... 

Vedere la documentazione assignment statements riferimento:

Se la lista di destinazione contiene un bersaglio preceduto da un asterisco, chiamato “preferiti” target: L'oggetto deve essere una sequenza con almeno tanti elementi quanti sono sono gli obiettivi nell'elenco di destinazione, meno uno. I primi elementi della sequenza sono assegnati, da sinistra a destra, ai bersagli prima del bersaglio stellato. Gli oggetti finali della sequenza sono assegnati ai bersagli dopo il bersaglio stellato. Un elenco degli elementi rimanenti nella sequenza viene quindi assegnato al target a stella (l'elenco può essere vuoto).

uso di un asterisco nel lato lef mano (target list) di un'assegnazione è un errore di sintassi in Python 2.

Problemi correlati