¿Estilo Python – línea continua con cuerdas?

Al tratar de obedecer las reglas de estilo de python, he establecido mis editores en un máximo de 79 cols.

En el PEP, recomienda utilizar la continuación implícita de python entre paréntesis, paréntesis y llaves. Sin embargo, cuando trato con cadenas cuando llego al límite de col, se vuelve un poco raro.

Por ejemplo, tratando de usar una multilínea

mystr = """Why, hello there wonderful stackoverflow people!""" 

Volverá

 "Why, hello there\nwonderful stackoverflow people!" 

Esto funciona:

 mystr = "Why, hello there \ wonderful stackoverflow people!" 

Ya que devuelve esto:

 "Why, hello there wonderful stackoverflow people!" 

Pero, cuando la statement se sangra unos bloques, esto se ve raro:

 do stuff: and more stuff: and even some more stuff: mystr = "Why, hello there \ wonderful stackoverflow people!" 

Si intentas sangrar la segunda línea:

 do stuff: and more stuff: and even some more stuff: mystr = "Why, hello there \ wonderful stackoverflow people!" 

Su cadena termina como:

 "Why, hello there wonderful stackoverflow people!" 

La única forma que he encontrado para solucionar esto es:

 do stuff: and more stuff: and even some more stuff: mystr = "Why, hello there" \ "wonderful stackoverflow people!" 

Lo que me gusta más, pero también es algo incómodo en los ojos, ya que parece que hay una cuerda que se encuentra en medio de la nada. Esto producirá el adecuado:

 "Why, hello there wonderful stackoverflow people!" 

Entonces, mi pregunta es: ¿cuáles son las recomendaciones de algunas personas sobre cómo hacer esto y hay algo que me falta en la guía de estilo que muestra cómo debo hacer esto?

Gracias.

Dado que los literales de cadena adyacentes se unen automáticamente en una sola cadena , solo puede usar la continuación de línea implícita entre paréntesis, según lo recomendado por PEP 8:

 print("Why, hello there wonderful " "stackoverflow people!") 

Solo señalando que es el uso de paréntesis lo que invoca la autocatatenación. Eso está bien si ya los estás usando en la statement. De lo contrario, solo usaría ‘\’ en lugar de insertar paréntesis (que es lo que la mayoría de los IDE hacen automáticamente por usted). La sangría debe alinear la continuación de la cadena para que sea compatible con PEP8. P.ej:

 my_string = "The quick brown dog " \ "jumped over the lazy fox" 

Otra posibilidad es usar el módulo textwrap. Esto también evita el problema de que “la cuerda simplemente se sienta en medio de la nada” como se menciona en la pregunta.

 import textwrap mystr = """\ Why, hello there wonderful stackoverfow people""" print (textwrap.fill(textwrap.dedent(mystr))) 

He solucionado esto con

 mystr = ' '.join( ["Why, hello there", "wonderful stackoverflow people!"]) 

en el pasado. No es perfecto, pero funciona bien para cuerdas muy largas que no deben tener saltos de línea.

Esta es una manera bastante limpia de hacerlo:

 myStr = ("firstPartOfMyString"+ "secondPartOfMyString"+ "thirdPartOfMyString")