解压缩许多返回值时用于行长度和格式的Python样式

时间:2014-03-27 02:21:31

标签: python pep8 iterable-unpacking argument-unpacking

假设函数some_descriptively_named_function返回4 - tuple的4个返回参数。我想调用some_descriptively_named_function,遵循80个字符的行长度限制,并将所有4个输出解压缩为描述性命名的变量:

some_desc_name1, some_desc_name2, some_desc_name3, some_desc_name4 = some_descriptively_named_function() 

一个选项是:

some_desc_name1, some_desc_name2, some_desc_name3, some_desc_name4 = (
    some_descriptively_named_function()
)

虽然有四个解压缩值,但即使这样也可以推动它的行长度。如果我想对每个论点作一个简短的评论,那就很难很好地阐述它。

以下有效,但不清楚这是好还是坏。

(some_desc_name1, # Comment 1
 some_desc_name2, # Comment 3
 some_desc_name3, # Comment 3
 some_desc_name4  # Comment 4
) = some_descriptively_named_function()

这对于线路长度来说肯定是好的,但尝试考虑PEP8如何应用于在一行开头发生的括号是很奇怪的。

是否已建立(希望与PEP8相关)Python风格指南?

2 个答案:

答案 0 :(得分:3)

您的格式LGTM,但有几条建议:

(some_desc_name1,
 some_desc_name2,
 some_desc_name3,
 some_desc_name4) = some_descriptively_named_function()
  • 通过拉出来使呼叫功能更清晰
  • 不要评论解压缩的变量。 some_descriptively_named_function()的文档字符串应该清楚地定义它们。

答案 1 :(得分:0)

如果一个函数返回一个元组,那么这些值都是相关的并且不需要单独的注释是有意义的。在函数定义中,该描述可能更有意义。然后,您的第一个选项将是将函数结果快速设置为4个不同变量的最佳解决方案。另一种选择是简单地将整个元组用作变量:

some_desc_name1 = some_descriptively_named_function()
print some_desc_name1[0] # Comment 1