2013-03-24 13 views

risposta

21

È possibile decomprimere la tupla restituita in alcune variabili dummy:

_, keep_this, _ = f() 

Non deve essere _, solo qualcosa ovviamente non utilizzati.

(Non usare _ come un nome fittizio nell'interprete interattivo, lì viene utilizzato per mantenere l'ultimo risultato.)

 

In alternativa, l'indice tupla restituita:

keep_this = f()[1] 
+1

mi ha battuto ad esso da un paio di secondi! Darn! – feralin

+0

Non riesco a trovare alcuna documentazione per le variabili dummy. Qualsiasi aiuto? – Cupitor

+1

@Naji in pratica, ciò che fa il codice è assegnare le tre parti della tupla a tre variabili. Un singolo carattere di sottolineatura è un nome di variabile valido e può essere assegnato più volte in un compito di destrutturazione. Quindi, quando questo compito è completo, avrai due variabili: keep_questo, che equivale al valore medio nella tupla, e _, che (se sono corretto) è uguale all'ultimo valore nella tupla. Dovresti cercare compiti distruttivi per saperne di più. – feralin

1

Quello che si sta facendo con la linea return a,b,c sta creando un tuple e quindi lo si restituisce dalla funzione. Quindi puoi usare la decostruzione della tupla per ottenere solo i valori che desideri dal risultato. Esempio:

def f(x): 
    return x, x + 1, x + 2 
_, b, _ = f(0) 
print(b) # prints "1" 
+0

Come una domanda a parte, perché il codice è tutto su una riga? L'ho inserito su più righe ... – feralin

+0

In qualche modo sei riuscito a inserire un carattere [SOH] (http://en.wikipedia.org/wiki/Start-of-Header#SOH) (0x01, CTRL-A) . –

+0

Non sono sicuro di come sono riuscito a farlo! – feralin

3
def f(): 
    return 1,2,3 

qui, f() restituisce una tupla (1,2,3) in modo da poter fare qualcosa di simile:

a = f()[0] 
print a 
1 

a = f()[1] 
print a 
2 

a = f()[2] 
print a 
3 
Problemi correlati