nomenclatura name español python coding-style

name - Estilo Python-continuación de línea con cadenas



python package name (4)

Como los literales de cadenas adyacentes se unen automáticamente en una sola cadena , puede usar la continuación de línea implícita entre paréntesis, como lo recomienda PEP 8:

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

Al tratar de obedecer las reglas de estilo de python, configuré mis editores a un máximo de 79 cols.

En el PEP, recomienda usar la continuación implícita de python entre corchetes, paréntesis y llaves. Sin embargo, cuando se trata de cadenas cuando alcanzo el límite de col, se pone un poco raro.

Por ejemplo, tratando de usar un 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!"

Como devuelve esto:

"Why, hello there wonderful stackoverflow people!"

Pero, cuando el enunciado tiene sangrado unas pocas cuadras, parece extraño:

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

Si intentas y sangrar la segunda línea:

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

Tu cadena termina como:

"Why, hello there wonderful stackoverflow people!"

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

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

Lo cual me gusta más, pero también es algo incómodo para los ojos, ya que parece que hay una cuerda simplemente sentada en el 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 debería estar haciendo esto?

Gracias.


He salido de esto con

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

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


Otra posibilidad es usar el módulo de envoltura de texto. Esto también evita el problema de "cadena simplemente sentada en el 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)))


Solo señalando que es el uso de paréntesis que invoca auto-concatenación. Eso está bien si ya los estás usando en la declaración. De lo contrario, simplemente usaría ''/' en lugar de insertar paréntesis (que es lo que la mayoría de los IDE hacen automáticamente). La sangría debe alinear la continuación de cadena para que sea compatible con PEP8. P.ej:

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