在python中格式化长行代码的正确方法是什么?

时间:2015-08-12 18:39:17

标签: python

我有一些代码行返回并从函数中分配多个值,如下所示。这当然使它成为一条很长的路线。如此样式化/格式化一行代码的正确方法是什么?我已经提到了一些我想出的可能性。

numOfDay

编辑:谢谢大家的回答。我不能投票,因为我是一个菜鸟(没有代表),所以我只想说我很感激。我以前读过风格指南,通常我会避免像这样的长线。在这种情况下,我觉得我需要这个函数来计算并返回多个统计数据。我想我会使我的一些命名更简洁,并研究返回一个对象或命名元组。谢谢!

3 个答案:

答案 0 :(得分:4)

您希望避免进入这种情况。如果你有这么多名字的元组赋值,你甚至不能用80个字符的那一行,那么现在是重构的时候了。

例如,您可以让函数返回namedtuple class代替:

from collections import namedtuple

Result = namedtuple('Result', 'foo bar spam ham eggs')

def sort_of_long_function_name(arg1, arg2, arg3, arg4):
    return Result(foo_result, bar_result, spam_result, ham_result, eggs_result)

result = sort_of_long_function_name(param1, param2, param3, param4, param5)
do_something_with(result.foo)
do_something_else_with(result.bar)
# etc.

现在不是5个变量,而是有一个有用的命名属性。

这就是urlparse module中的解析函数所做的事情,namedtuple类甚至还有一些其他方法可以重新创建解析后的URL。

答案 1 :(得分:2)

是的,这是一个奇怪的情况。不鼓励使用反斜杠,因为鼓励they can cause subtle bugs和括号代替它们。

  

包装长行的首选方法是使用Python隐含的方法   括号,括号和括号内的行继续。排长龙   可以通过包装表达式来分解多行   括弧。这些应该优先使用反斜杠   换行。

     

- PEP 8,https://www.python.org/dev/peps/pep-0008/#maximum-line-length

所以我建议:

(long_name_1,
 long_name_2) = 1, 2

答案 2 :(得分:1)

一些一般性的想法:

  • 使用缩写名称(但可读性 重要)。
  • 使用元组*,例如variables = get_variables()并将其称为variables[n]。 (*或dictlist)。
  • 可能可以将变量封装到类中(altrough类可能不是解决问题的好方法,它实际上取决于你的代码)。
  • 可能表示您的代码/设计存在较大问题。

有关格式化的指南,请参阅this

相关问题