Что обычный/самый ясный путь состоит в том, чтобы записать этому в Python?
value, _ = func_returning_a_tuple()
или:
value = func_returning_a_tuple()[0]
value = func_returning_a_tuple () [0]
кажется более ясным и также может быть обобщено.
Что, если функция возвращала кортеж с более чем двумя значениями?
Что, если логика программы интересуется 4-м элементом бесчисленного кортежа?
Что если размер возвращаемого кортежа меняется?
Ни один из этих вопросов не влияет на идиому, основанную на субскриптах, но влияет в случае идиомы с множественным присваиванием.
Для извлечения отдельного элемента индексация немного более идиоматична. Когда вы извлекаете два или более элемента, распаковка становится более идиоматической. Это просто эмпирическое наблюдение с моей стороны; Я не знаю каких-либо руководств по стилю, рекомендующих или предписывающих какой-либо выбор! -)
Если вы оцените удобный способ сделать это в python3.x, ознакомьтесь с предложением по расширению Python (PEP) 3132 на этой странице Что нового в Python:
Расширенная итеративная распаковка . Теперь вы можете писать такие вещи, как a, b, * rest = some_sequence
. И даже * rest, a = stuff
. Остальной объект всегда является (возможно, пустым) списком; правая часть может быть любой итеративной. Пример:
(a, * rest, b) = range (5)
Это устанавливает a
в 0
, b
в 4
и отдыхают с
до [1, 2, 3]
.