2010-03-07 13 views
6

Supongamos que está llamando a una función, donde claramente hay una necesidad de dividir la declaración en pocas líneas, por razones de legibilidad. Sin embargo, hay al menos dos vías para hacerlo:Estilo de codificación: ¿mantiene los paréntesis en la misma línea o nueva línea?

haría esto:

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

o prefieres hacerlo:

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

O, por favor sugerir su propio formato. Indique también las razones por las cuales usaría un formato particular y cuál es el problema con el otro.

Gracias

Respuesta

8

probablemente haría:

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

Me gustaría mantener el soporte en la misma línea, por lo que las búsquedas de render( trabajo. Y porque lo encuentro más claro. Pero pondría todos los argumentos en nuevas líneas.

+0

excelente punto en la búsqueda de "render (" – Art

+0

1 interesante que nunca han pensado en este estilo –

9

de Python oficial PEP-8 sugiere la primera.

2

El segundo parece haber escapado de un programa C [# +] *. La continuación de la línea de retroceso es fea, propensa a problemas con el espacio posterior, y no hay excusa para usarla cuando tiene() o [] para usar.

+0

1 nunca utilice la barra invertida, siempre hay una mejor opción.. (continuación dentro(), [], {}) – u0b34a0f6ae

+0

de __future__ llaves de importación –

+0

Quizás quiso decir 'de __future__ import llaves '.' de SOhelp import backticks' –

7

lo haría:

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

+1, el más elegante de los enfoques sugeridos. –

+3

+1 Sólo porque usted * puede * hacerlo todo en una declaración no significa que * debería *. –