2010-03-07 19 views
6

假設您正在調用一個函數,出於可讀性的原因,顯然需要將語句分解成幾行。然而,有至少兩種方式來做到這一點:編碼風格 - 將括號保留在同一行還是新行?

你會做到這一點:

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

你還是願意這樣做:

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

或者,請提出你自己的格式。還請列出爲什麼要使用特定格式的原因以及另一個格式的錯誤。

感謝

回答

8

我可能會做的事:

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

我會保持支架在同一行,從而使搜索render(工作。因爲我覺得它更清晰。但我會把所有的論點都放在新的路線上。

+0

良好的出發點上搜索「渲染(」 – Art 2010-03-07 08:50:04

+0

+1有趣的我從來沒有想過這種風格的 – 2010-03-07 15:43:50

9

Python的官方PEP-8提出的第一個。

2

第二個看起來像是從C [#+] *程序中逃脫出來的。反斜槓的續行是醜陋的,容易出現拖尾空間的問題,當你使用()或[]時,沒有任何理由使用它。

+0

+1從來不使用反斜槓,總是有一個更好的選擇。 (延續inside(),[],{}) – u0b34a0f6ae 2010-03-07 11:44:34

+0

from __future__ import braces – 2010-03-08 00:58:25

+0

也許你的意思是'from __future__ import braces'。from SOhelp import backticks' – 2010-03-08 01:53:35

7

我會做:

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

+1,建議最優雅的方法 – 2010-03-07 18:38:04

+3

+1 Just just because你*可以*在一個聲明中這樣做並不意味着你*應該*。 – 2010-03-07 18:42:53