2010-09-27 4 views
28

C'è un modo per scrivere la seguente funzione in modo che il mio IDE non si lamenti che la colonna è una variabile non utilizzata?È possibile decomprimere una tupla in Python senza creare variabili indesiderate?

def get_selected_index(self): 
    (path, column) = self._tree_view.get_cursor() 
    return path[0] 

In questo caso non mi interessa circa il secondo elemento della tupla e voglio solo scartare il riferimento ad esso quando viene decompresso.

risposta

49

In Python lo _ viene spesso utilizzato come segnaposto ignorato.

(path, _) = self._treeView.get_cursor() 

È anche possibile evitare il disimballaggio in quanto una tupla è indicizzabile.

def get_selected_index(self): 
    return self._treeView.get_cursor()[0][0] 
+17

Vale la pena notare che '_' non è un qualsiasi tipo di magia sintattico, ma una convenzione (naturalmente, è una convenzione riconosciuto da IDE e pylint, e le convenzioni Python sono piuttosto forte ...) – detly

+1

Python sarebbe essere nulla senza convenzioni! – fredley

+2

Questa convenzione è documentata? – Nathan

4

Se non si preoccupano la seconda voce, perché non basta estrarre il primo:

def get_selected_index(self): 
    path = self._treeView.get_cursor()[0] 
    return path[0] 
+0

Nota che il ritorno dovrebbe essere 'path' ritorno, non' percorso di ritorno [0] ' –

+3

Questo è più debole, perché rimuove l'affermazione che ci sono esattamente due elementi. –

+0

@ Michael Mior: ho rotolato indietro il vostro edit: Sulla base della domanda iniziale, dovrebbe essere ancora 'percorso [0]' ('path' sembra essere una sequenza stessa) – Steven

0

sembra piuttosto, non so se una buona prestazione.

a = (1, 2, 3, 4, 5) 
x, y = a[0:2] 
Problemi correlati