Присвоение None

У меня есть функция, которая возвращает 3 числа, например:

def numbers():
   return 1,2,3

Обычно я вызываю эту функцию для приема всех трех возвращаемых чисел, например:

a, b, c = numbers()

Однако у меня есть один случай, когда мне нужно только первое возвращаемое число. Я попытался использовать:

a, None, None = numbers()

Но я получаю "SyntaxError: присваивание None".

Я знаю, конечно, что я могу использовать первый вариант, который я упомянул, а затем просто не использовать переменные "b" и "c". Однако это похоже на "отходы" двух варов и похоже на неправильное программирование.

Ответы

Ответ 1

a, _, _ = numbers()

- это питонический способ сделать это. В Python 3 вы также можете использовать:

a, *_ = numbers()

Чтобы уточнить _ - это нормальное имя переменной в Python, за исключением того, что оно обычно используется для обозначения не важных переменных.

Ответ 2

Другим способом является, конечно, a=numbers()[0], если вы не хотите объявлять другую переменную. Сказав это, я обычно использую сам.

Ответ 3

Как я это делаю:

a = numbers()[0]

Увидев, что возвращаемый тип является кортежем, вы можете получить к нему доступ через индекс.

Это решение не позволяет вам объявлять неиспользуемые/бессмысленные переменные, такие как "_". Большинство людей не обращают внимания на неиспользуемые переменные, однако моя настройка настраивается, чтобы предупредить меня о таких вещах, которые могут указывать на потенциально неиспользованный код и т.д.