online - python docstring
Cómo escribir una cadena muy larga que cumpla con PEP8 y evite E501 (6)
Como PEP8 sugiere mantener por debajo de la regla de 80 columnas para su programa Python, ¿cómo puedo cumplir con eso con cadenas largas, es decir,
s = "this is my really, really, really, really, really, really, really long string that I''d like to shorten."
¿Cómo voy a expandir esto a la siguiente línea, es decir,
s = "this is my really, really, really, really, really, really" +
"really long string that I''d like to shorten."
Además, como las constantes de cadena vecinas se concatenan automáticamente, puede codificarlo así también:
s = ("this is my really, really, really, really, really, really, "
"really long string that I''d like to shorten.")
Tenga en cuenta que no hay signo más y agregué la coma adicional y el espacio que sigue al formateo de su ejemplo.
Personalmente, no me gustan las barras invertidas, y recuerdo haber leído en alguna parte que su uso está en desuso en favor de esta forma, que es más explícita. Recuerde: "Explícito es mejor que implícito".
Considero que la barra invertida es menos clara y menos útil porque en realidad se está escapando del carácter de nueva línea. No es posible poner un comentario de final de línea después si es necesario. Es posible hacer esto con constantes de cadena concatenadas:
s = ("this is my really, really, really, really, really, really, " # comments ok
"really long string that I''d like to shorten.")
Utilicé una búsqueda en Google de "longitud de línea de python" que devuelve el enlace PEP8 como primer resultado, pero también enlaces a otra buena publicación de sobre este tema: " ¿Por qué Python PEP-8 debería especificar una longitud máxima de línea de 79 caracteres? "
Otra buena frase de búsqueda sería "continuación de línea de pitón".
Barra invertida:
s = "this is my really, really, really, really, really, really" + /
"really long string that I''d like to shorten."
o envolver en parens:
s = ("this is my really, really, really, really, really, really" +
"really long string that I''d like to shorten.")
Con un /
puede expandir declaraciones a múltiples líneas:
s = "this is my really, really, really, really, really, really" + /
"really long string that I''d like to shorten."
Deberia trabajar.
Concatenación implícita podría ser la solución más limpia:
s = "this is my really, really, really, really, really, really," /
" really long string that I''d like to shorten."
Editar Al reflexionar, estoy de acuerdo en que la sugerencia de Todd de usar corchetes en lugar de continuación de línea es mejor por todas las razones que da. La única duda que tengo es que es relativamente fácil confundir cadenas entre corchetes con tuplas.
Creo que la palabra más importante en su pregunta fue "sugiere".
Los estándares de codificación son cosas divertidas. A menudo, la orientación que proporcionan tiene una muy buena base cuando se escribió (por ejemplo, la mayoría de los terminales no pueden mostrar> 80 caracteres en una línea), pero con el tiempo se vuelven funcionalmente obsoletos, pero aún se adhieren rígidamente. Supongo que lo que tienes que hacer aquí es sopesar los méritos relativos de "romper" esa sugerencia en particular contra la legibilidad y mainatibilidad de tu código.
Lo siento, esto no responde directamente su pregunta.
Perdiste un espacio, y probablemente necesites un personaje de continuación de línea, es decir. a /
.
s = "this is my really, really, really, really, really, really" + /
" really long string that I''d like to shorten."
o incluso:
s = "this is my really, really, really, really, really, really" /
" really long string that I''d like to shorten."
Parens también trabajaría en lugar de la continuación de la línea, pero se arriesga a que alguien piense que tiene la intención de tener una tupla y que acaba de olvidar una coma. Tome por ejemplo:
s = ("this is my really, really, really, really, really, really"
" really long string that I''d like to shorten.")
versus:
s = ("this is my really, really, really, really, really, really",
" really long string that I''d like to shorten.")
Con el tipado dinámico de Python, el código puede ejecutarse de cualquier manera, pero produce resultados incorrectos con el que no pretendía.