¿Cómo puedo hacer un salto de línea (continuación de línea) en Python?

Tengo una larga línea de código que quiero dividir en varias líneas. ¿Qué uso y qué es la sintaxis?

Por ejemplo, añadiendo un montón de líneas.

 e = 'a' + 'b' + 'c' + 'd' 

y entrar en dos líneas:

 e = 'a' + 'b' + 'c' + 'd' 
844
10 сент. fijado por Ray Vega 10 sep. 2008-09-10 02:45 '08 a las 2:45 am 2008-09-10 02:45
@ 8 respuestas

¿Qué es una línea? Solo puede tener los argumentos en la siguiente línea sin ningún problema:

 a = dostuff(blahblah1, blahblah2, blahblah3, blahblah4, blahblah5, blahblah6, blahblah7) 

De lo contrario, puedes hacer algo como esto:

 if a == True and \ b == False 

Aprende más sobre la guía de estilo .

En la línea de tu ejemplo:

 a = '1' + '2' + '3' + \ '4' + '5' 

O

 a = ('1' + '2' + '3' + '4' + '5') 

Tenga en cuenta que la guía de estilo dice que es preferible utilizar continuaciones implícitas con paréntesis, pero en este caso en particular, simplemente agregar paréntesis alrededor de su expresión es probablemente una forma incorrecta.

969
10 сент. la respuesta es dada por Harley Holcombe 10 sep . 2008-09-10 02:52 '08 a las 2:52 am 2008-09-10 02:52

De la guía de estilo para el código de Python :

La forma preferida de envolver cadenas largas es usar la continuación de la cadena deseada en Python entre paréntesis, corchetes y llaves. Las líneas largas se pueden dividir en varias líneas envolviendo expresiones entre paréntesis. Deben usarse en lugar de usar una barra invertida para continuar la línea.

Las barras invertidas pueden ser apropiadas de vez en cuando. Por ejemplo, las declaraciones largas y múltiples no pueden usar la continuación implícita, por lo que las barras invertidas son aceptables:

 with open('/path/to/some/file/you/want/to/read') as file_1, \ open('/path/to/some/file/being/written', 'w') as file_2: file_2.write(file_1.read()) 

Otro tal caso es con aseveraciones.

Verifique que la cadena continúe correctamente. El lugar preferido para romper un operador binario es después de la declaración en lugar de delante de él. Algunos ejemplos son:

 class Rectangle(Blob): def __init__(self, width, height, color='black', emphasis=None, highlight=0): if (width == 0 and height == 0 and color == 'red' and emphasis == 'strong' or highlight > 100): raise ValueError("sorry, you lose") if width == 0 and height == 0 and (color == 'red' or emphasis is None): raise ValueError("I don't think so -- values are %s, %s" % (width, height)) Blob.__init__(self, width, height, color, emphasis, highlight) 

EDITAR: PEP8 ahora recomienda usar la convención opuesta (para dividir en operaciones binarias) utilizada por los matemáticos y sus editores para mejorar la legibilidad.

El estilo de Donald Knuth, al separarse, el operador binario alinea los operadores verticalmente, lo que reduce la carga de trabajo en el ojo al determinar qué elementos se agregan y se restan.

border=0

Desde PEP8: ¿Debería interrumpirse la línea antes o después del operador binario? :

Donald Knuth explica la regla tradicional en su serie "Computadoras y kit": "Aunque las fórmulas dentro de un párrafo siempre se interrumpen después de las operaciones y relaciones binarias, las fórmulas mostradas siempre se rompen antes de las operaciones binarias" [3].

Siguiendo las tradiciones de las matemáticas, generalmente se obtiene un código más legible:

 # Yes: easy to match operators with operands income = (gross_wages + taxable_interest + (dividends - qualified_dividends) - ira_deduction - student_loan_interest) 

En el código Python, se permite dividir antes o después de un operador binario, si el acuerdo se acuerda localmente. Para el nuevo código, se propone el estilo Knuth.

[3]: Donald Knut The TeXBook, páginas 195 y 196

187
10 сент. La respuesta se da jfs 10 sep. 2008-09-10 03:06 '08 a las 3:06 2008-09-10 03:06

El peligro de usar una barra invertida para completar una línea es que si se agrega un espacio después de la barra invertida (que por supuesto es muy difícil de ver), la barra invertida ya no hace lo que pensaba.

Para más información, consulte Modismos de Python y Anti-idioms (para Python 2 o Python 3 ).

61
15 сент. La respuesta la da George V. Reilly el 15 de septiembre. 2008-09-15 09:28 '08 a las 9:28 2008-09-15 09:28

Puedes romper las líneas entre paréntesis y llaves. Además, puede agregar el carácter de barra diagonal inversa a una cadena para romperla explícitamente:

 x = (tuples_first_value, second_value) y = 1 + \ 2 
21
21 сент. La respuesta la da Konrad Rudolph el 21 de septiembre. 2008-09-21 15:20 '08 a las 15:20 2008-09-21 15:20

Ponga una \ al final de la línea o encierre la declaración en parens ( .. ) . Desde IBM :

 b = ((i1 < 20) and (i2 < 30) and (i3 < 40)) 

o

 b = (i1 < 20) and \ (i2 < 30) and \ (i3 < 40) 
20
10 сент. Respuesta dada por SCdF Sep 10 2008-09-10 02:48 '08 a las 2:48 2008-09-10 02:48

De la boca del caballo: unión explícita de cuerdas.

Se pueden conectar dos o más líneas físicas a líneas lógicas usando barras diagonales inversas ( \ ), a saber: cuando una línea física finaliza una barra diagonal inversa que no forma parte de una cadena o comentario literal, se conecta a la siguiente formación de una sola línea lógica, borrando la barra invertida y después del final del carácter de línea. Por ejemplo:

 if 1900 < year < 2100 and 1 <= month <= 12 \ and 1 <= day <= 31 and 0 <= hour < 24 \ and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date return 1 

Una línea que termina en una barra invertida no puede llevar un comentario. Backslash no continúa el comentario. La barra invertida no continúa con el token que no sea la cadena literal (es decir, los tokens que no sean literales de cadena no pueden separar las líneas físicas que usan una barra invertida). La barra invertida es ilegal en otra parte de la línea para la cadena literal.

17
10 сент. Responder a Jason Navarrete sep 10 2008-09-10 02:53 '08 a las 2:53 am 2008-09-10 02:53

Tomado de autostop Python tutorial ( línea continua ):

Cuando una línea de código lógica es más larga que el límite aceptado, debe dividirla en varias líneas físicas. El intérprete de Python se une a líneas consecutivas si el último carácter de la línea es una barra invertida. Esto es útil en algunos casos, pero como regla general, deben evitarse debido a su fragilidad: un espacio agregado al final de la línea, después de una barra invertida, rompe el código y puede generar resultados inesperados.

La mejor solución es usar paréntesis alrededor de sus elementos. Cuando se deja un paréntesis cerrado al final de la línea, el intérprete de Python se une a la línea siguiente hasta que se cierran los paréntesis. El mismo comportamiento se mantiene para frenillos y frenillos.

Sin embargo , la mayoría de las veces, la necesidad de dividir una línea lógica larga es una señal de que está intentando hacer demasiadas cosas al mismo tiempo, lo que puede dificultar su lectura.

Dicho esto, aquí hay un ejemplo de importaciones múltiples (cuando se exceden los límites definidos en el PEP-8 ):

 from app import ( app, abort, make_response, redirect, render_template, request, session ) 
0
06 дек. respuesta dada ivanleoncz 06 dic. 2018-12-06 21:45 '18 a las 21:45 2018-12-06 21:45

Puede que no sea una ruta de acceso de python, pero normalmente uso una lista con la función de unión para escribir una cadena larga, como consultas SQL.

 query = " ".join([ 'SELECT * FROM "TableName"', 'WHERE "SomeColumn1"=VALUE', 'ORDER BY "SomeColumn2"', 'LIMIT 5;' ]) 
-1
02 нояб. La respuesta es dada por Hardik Sondagar 02 Nov. 2018-11-02 14:22 '18 a las 2:22 pm 2018-11-02 14:22

Otras preguntas sobre la etiquetas de o hacer una pregunta