¿Cómo harías para formatear una línea larga como esta? Me gustaría llegar a no más de 80 caracteres de ancho:
logger.info("Skipping {0} because its thumbnail was already in our system as {1}.".format(line[indexes['url']], video.title))
¿Es esta mi mejor opción?
url = "Skipping {0} because its thumbnail was already in our system as {1}."
logger.info(url.format(line[indexes['url']], video.title))
python
formatting
code-formatting
Gattster
fuente
fuente
indexes
: el plural correcto deindex
esindices
.Respuestas:
Eso es un comienzo. No es una mala práctica definir sus cadenas más largas fuera del código que las usa. Es una forma de separar datos y comportamiento. Su primera opción es unir cadenas literales juntas implícitamente haciéndolas adyacentes entre sí:
O con continuaciones de final de línea, que es un poco más frágil, ya que esto funciona:
Pero esto no:
¿Ver la diferencia? ¿No? Bueno, tampoco lo harás cuando sea tu código.
La desventaja de la unión implícita es que solo funciona con literales de cadena, no con cadenas tomadas de variables, por lo que las cosas pueden ponerse un poco más difíciles cuando refactoriza. Además, solo puede interpolar el formato en la cadena combinada como un todo.
Alternativamente, puede unirse explícitamente utilizando el operador de concatenación (
+
):Explícito es mejor que implícito, como dice el zen de python, pero esto crea tres cadenas en lugar de una, y usa el doble de memoria: están las dos que ha escrito, más una, que son las dos juntas, por lo que Hay que saber cuándo ignorar el zen. Lo bueno es que puede aplicar formato a cualquiera de las subcadenas por separado en cada línea, o a todo el lote desde fuera de los paréntesis.
Finalmente, puede usar cadenas entre comillas triples:
Este es a menudo mi favorito, aunque su comportamiento es ligeramente diferente ya que la nueva línea y cualquier espacio en blanco inicial en las líneas posteriores se mostrarán en su cadena final. Puede eliminar la nueva línea con una barra invertida de escape.
Esto tiene el mismo problema que la misma técnica anterior, ya que el código correcto solo difiere del código incorrecto por el espacio en blanco invisible.
Cuál es el "mejor" depende de su situación particular, pero la respuesta no es simplemente estética, sino de comportamientos sutilmente diferentes.
fuente
'
para contener esa cadena, o escapar de las comillas dobles dentro de su cadena, o usar las comillas dobles triples"""
. El problema con las cadenas entre comillas que contienen comillas es el mismo si usa una sola línea o varias líneas para definir la cadena literal.+
.El compilador une los literales de cadena consecutivos y las expresiones entre paréntesis se consideran una sola línea de código:
fuente
Personalmente no me gusta colgar bloques abiertos, así que lo formatearía como:
En general, no me molestaría en esforzarme demasiado para que el código se ajuste exactamente dentro de una línea de 80 columnas. Vale la pena mantener la longitud de la línea a niveles razonables, pero el límite de 80 es cosa del pasado.
fuente
Puede usar el módulo textwrap para dividirlo en varias líneas
De la documentación :
fuente
Para cualquier persona que también esté tratando de invocar
.format()
una cadena larga y no pueda utilizar algunas de las técnicas de ajuste de cadena más populares sin interrumpir la.format(
llamada posterior , puede hacerlo enstr.format("", 1, 2)
lugar de hacerlo"".format(1, 2)
. Esto le permite romper la cuerda con la técnica que desee. Por ejemplo:puede ser
De lo contrario, la única posibilidad es usar continuaciones de final de línea, de las cuales personalmente no soy fanático.
fuente