2010-09-27 6 views
28

Есть ли способ написать следующую функцию, чтобы моя IDE не жаловалась, что столбец является неиспользованной переменной?Можно ли распаковать кортеж в Python без создания нежелательных переменных?

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

В этом случае я не заботиться о втором элементе в кортеже и просто хочу отказаться от ссылки на него, когда он распаковал.

ответ

49

В Python _ часто используется в качестве игнорируемого заполнителя.

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

Вы также можете избежать распаковки, поскольку кортеж индексируется.

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

Стоит отметить, что '_' не любой вид синтаксической магии, но соглашение (конечно, это соглашение признается Иды и pylint и конвенции Python довольно сильно ...) – detly

+1

Python будет быть без условностей! – fredley

+2

Является ли это соглашение документированным? – Nathan

4

Если вы не заботитесь о втором пункте, то почему бы не только извлечь первый:

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

Обратите внимание, что return теперь должен быть 'return path', а не' return path [0] ' –

+3

Это слабее, потому что оно устраняет утверждение, что есть ровно два элемента. –

+0

@Michael Mior: Я отбросил ваше редактирование: на основании исходного вопроса он все равно должен быть «path [0]» («путь», кажется, является самой последовательностью) – Steven

0

это выглядит красиво, я не если хорошее представление об этом.

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