我有一些代码行返回并从函数中分配多个值,如下所示。这当然使它成为一条很长的路线。如此样式化/格式化一行代码的正确方法是什么?我已经提到了一些我想出的可能性。
numOfDay
编辑:谢谢大家的回答。我不能投票,因为我是一个菜鸟(没有代表),所以我只想说我很感激。我以前读过风格指南,通常我会避免像这样的长线。在这种情况下,我觉得我需要这个函数来计算并返回多个统计数据。我想我会使我的一些命名更简洁,并研究返回一个对象或命名元组。谢谢!
答案 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]
。 (*或dict
或list
)。有关格式化的指南,请参阅this。