编码风格 - 将括号放在同一行还是新行?

8
假设你正在调用一个函数,为了可读性的缘故,需要将语句分解成几行。然而,至少有两种方法可以做到这一点:
你会选择这样做吗:
return render(request, template,
              {
                'var1' : value1,
                'var2' : value2,
                'var3' : value3
               }
             )

或者你更愿意这样做:

return render \
(
    request, template,
    {
        'var1' : value1,
        'var2' : value2,
        'var3' : value3
    }
)

或者,您可以提出自己的格式建议。请列出使用特定格式的原因以及其他格式的问题。
谢谢
4个回答

12

我可能会这样做:

return render(
    request, 
    template,
    {
        'var1' : value1,
        'var2' : value2,
        'var3' : value3
    }
)

我会把括号放在同一行,这样搜索render(时更方便。而且我觉得这样更清晰。但是我会让所有的参数都换到新的一行。


在搜索“render(”时,提出了一个很好的观点。 - Art
+1 有趣。我从未想过这种风格。 - Jeffrey Jose

11

Python官方PEP-8建议使用第一种方式。


Python官方的PEP-8建议使用第一种方式。

9
我会做:

我会做:

vars = {
    'var1' : value1,
    'var2' : value2,
    'var3' : value3,
}
return render(request, template, vars)

1
+1,是提出的方案中最优雅的一个。 - Alex Martelli
3
仅仅因为你可以在一个语句中完成所有操作并不意味着你应该这样做。 - Jon-Eric

2

第二个看起来像是从C[#+]*程序中逃脱出来的。反斜杠换行很丑陋,容易在末尾空格处出现问题,而当你有()或[]可用时,没有理由使用它。


+1 永远不要使用反斜杠,总有更好的选择(在括号、方括号或花括号内进行延续)。 - u0b34a0f6ae
future 导入大括号 - Humphrey Bogart
也许你的意思是 from __future__ import bracesfrom SOhelp import backticks - John Machin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接