2015-08-26 2 views
0

В Python, я хочу сделать что-то вроде этогоРаспаковка на несколько строк в стиле

an_explicit_variable_name, another_explicit_variable_name, an_even_more_explicit_variable_name = function(foo) 

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


Это лучшее, что я мог придумать, как далеко, как линия длиной касается, но мне не очень нравится использовать 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) 

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

data = container(*function(foo)) 
# use e.g. data.an_explicit_variable_name