Saltar al contenido

¿Cómo puedo dividir esta larga línea en Python?

Te recomendamos que pruebes esta respuesta en un entorno controlado antes de enviarlo a producción, un saludo.

Solución:

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 manera de separar los datos y el comportamiento. Tu primera opción es unirte string literales juntos implícitamente haciéndolos adyacentes entre sí:

("This is the first line of my text, "
"which will be joined to a second.")

O con continuaciones de final de línea, que es un poco más frágil, ya que esto funciona:

"This is the first line of my text, " 
"which will be joined to a second."

Pero esto no:

"This is the first line of my text, "  
"which will be joined to a second."

¿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 string literales, no con cadenas tomadas de variables, por lo que las cosas pueden ponerse un poco más complicadas cuando se refactoriza. Además, solo puede interpolar el formato en la combinación string como un todo.

Alternativamente, puede unirse explícitamente usando el operador de concatenación (+):

("This is the first line of my text, " + 
"which will be joined to a second.")

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 unidas, por lo que Hay que saber cuándo ignorar el zen. La ventaja 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:

"""This is the first line of my text
which will be joined to a second."""

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 aparecerán en su final. string. Puede eliminar la nueva línea con una barra invertida de escape.

"""This is the first line of my text 
which will be joined to a second."""

Esto tiene el mismo problema que la misma técnica anterior, en que el código correcto solo se diferencia del código incorrecto por espacios en blanco invisibles.

Cuál es “mejor” depende de su situación particular, pero la respuesta no es simplemente estética, sino una de comportamientos sutilmente diferentes.

Consecutivo string el compilador une los literales y las expresiones entre paréntesis se consideran una sola línea de código:

logger.info("Skipping 0 because it's thumbnail was "
  "already in our system as 1.".format(line[indexes['url']],
  video.title))

Personalmente, no me gusta colgar bloques abiertos, así que lo formatearía como:

logger.info(
    'Skipping 0 because its thumbnail was already in our system as 1.'
    .format(line[indexes['url']], video.title)
)

En general, no me molestaría esforzarme demasiado para hacer que el código encaje 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 estricto de 80 es cosa del pasado.

Si te animas, eres capaz de dejar una noticia acerca de qué le añadirías a esta noticia.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *