Распаковка в несколько строк со стилем

В Python я хочу сделать что-то вроде этого

an_explicit_variable_name, another_explicit_variable_name, an_even_more_explicit_variable_name = function(foo)

Но я также хочу, чтобы это было читаемым и помещалось на нескольких коротких строках, а не на одной очень длинной. Я не нашел никакой помощи в PEP 08. Этот вопрос немного связан, но ответы не совсем то, что я хочу.


Это лучшее, что я могу придумать в отношении длины линии, но мне не очень нравится использовать a[0] и т.п.

a = function(foo)
an_explicit_variable_name = a[0]
another_explicit_variable_name = a[1]
an_even_more_explicit_variable_name = a[2]

Это не работает, потому что вторая строка все еще слишком длинная

_ = function(foo)
an_explicit_variable_name, another_explicit_variable_name, an_even_more_explicit_variable_name = _

Должен ли я разделить переменные, которые я объявляю, на несколько строк? Если так, то как сделать отступ?

an_explicit_variable_name, \
    another_explicit_variable_name, \
    an_even_more_explicit_variable_name \
    = function(foo)


an_explicit_variable_name, \
        another_explicit_variable_name, \
        an_even_more_explicit_variable_name \
    = function(foo)

Какой стиль выбрать в этой ситуации?

1 ответ

Решение

Просто используйте скобки:

(an_explicit_variable_name, 
 another_explicit_variable_name, 
 an_even_more_explicit_variable_name) = function(foo)

В качестве альтернативы, если данные принадлежат друг другу, создайте объект-контейнер для их хранения, например, collections.namedtuple затем выполните:

data = container(*function(foo))
# use e.g. data.an_explicit_variable_name
Другие вопросы по тегам