使用样式拆开多行

use*_*ber 2 python coding-style python-2.7 iterable-unpacking

在Python中,我想做这样的事情

an_explicit_variable_name, another_explicit_variable_name, an_even_more_explicit_variable_name = function(foo)
Run Code Online (Sandbox Code Playgroud)

但我也希望这个可读并适合几条短线而不是一条非常长的线.我没有在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]
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为第二行仍然太长

_ = function(foo)
an_explicit_variable_name, another_explicit_variable_name, an_even_more_explicit_variable_name = _
Run Code Online (Sandbox Code Playgroud)

我应该将我在多行中声明的变量分开吗?如果是这样,我该如何缩进?

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)
Run Code Online (Sandbox Code Playgroud)

在这种情况下采用什么样的风格?

jon*_*rpe 6

只需使用括号:

(an_explicit_variable_name, 
 another_explicit_variable_name, 
 an_even_more_explicit_variable_name) = function(foo)
Run Code Online (Sandbox Code Playgroud)

或者,如果数据属于一起,则创建一个容器对象以将其保持在一起,例如a collections.namedtuple,然后执行:

data = container(*function(foo))
# use e.g. data.an_explicit_variable_name
Run Code Online (Sandbox Code Playgroud)