Python解包多个返回值时的行长度和格式风格
假设有一个函数 some_descriptively_named_function
,它会返回一个包含四个值的四元组。我想调用这个函数,同时保持每行不超过80个字符,并把这四个输出分别放到有意义的变量里:
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(Python的编码风格指南)对此有什么规定。
有没有什么公认的(希望与PEP8相关的)Python风格指南可以参考呢?
2 个回答
0
如果一个函数返回的是一个元组,那这些值通常是相关的,所以不需要对每个值单独进行注释。这样的描述放在函数定义里可能更合适。你提到的第一个选项是最好的解决方案,它可以快速把函数的结果分配给四个不同的变量。还有一个选择就是直接把整个元组当作一个变量来使用:
some_desc_name1 = some_descriptively_named_function()
print some_desc_name1[0] # Comment 1
5
你的格式看起来不错,但有几点建议:
(some_desc_name1,
some_desc_name2,
some_desc_name3,
some_desc_name4) = some_descriptively_named_function()
- 把调用的函数单独提出来,这样会更清楚。
- 不要对解包后的变量进行注释。
some_descriptively_named_function()
的文档说明应该清楚地定义这些变量。