解包许多返回值时的行长度和格式的 Python 样式

标签 python pep8 iterable-unpacking argument-unpacking

假设函数 some_descriptively_named_function 返回一个包含 4 个返回参数的 4-tuple。我想调用 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 风格指南?

最佳答案

您的格式 LGTM,以及一些建议:

(some_desc_name1,
 some_desc_name2,
 some_desc_name3,
 some_desc_name4) = some_descriptively_named_function()
  • 把调用函数拉出来更清晰
  • 不要注释解压缩的变量。 some_descriptively_named_function() 的文档字符串应该清楚地定义这些。

关于解包许多返回值时的行长度和格式的 Python 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22677078/

相关文章:

python - VideoCapture 在 Anaconda 中不起作用

python - Tkinter PhotoImage 中的透明度

python - 在删除 axis0 的 I 索引的子元素的同时创建一个平铺的多维数组?

python - PyQt5 : QMediaPlayer can't replay audio from QBuffer

python - 为什么 pep8/flake8 无法检测仅在 if 分支中声明的未绑定(bind)局部变量

python - 在字典中解包元组

python - 在 python 2.5 中格式化字符串解压列表

git - flake8,仅在 diff 和 exclude 上

Python 和类属性声明

python - 在转换时将元组扩展为参数?