Una de las cosas más comunes que solemos realizar en cualquier programa de software es imprimir un texto en pantalla dependiendo de las variables, errores o condiciones.
En Python 2.7 una manera de realizar esto era de la siguiente forma.
course = 'Python'
platform = 'Platzi'
print('El nuevo curso de %s en %s está increíble') % (course, platform)
El nuevo curso de Python en Platzi esta increíble
Es lo suficientemente legible, pero en el caso donde agreguemos más variables al texto final entonces nuestra línea se irá haciendo mucho más grande y afectará la lectura de nuestro código.
Esta manera ya está deprecada(como 2.7 y deberías tratar de actualizar a Python 3) y seguro la estás utilizando haciendo uso de str.format()
.
course = 'Python'
platform = 'Platzi'
print('El nuevo curso de {} en {} está increíble').format(course, platform)
El nuevo curso de Python en Platzi está increíble
Esta opción nos da la oportunidad de jugar incluso con diccionarios para introducirlos en nuestro string, este es un ejemplo de eso:
course = {'name': 'Python', 'teacher': 'David'}
print('En el curso de {name} el profesor es {teacher}').format(name=course['name'], teacher=course['teacher'])
En el curso de Python el profesor es David
O también:
course = {'name': 'Python', 'teacher': 'David'}
print('En el curso de {name} el profesor es {teacher}').format(**course)
En el curso de Python el profesor es David
Sin embargo, seguimos teniendo el mismo problema anterior, sigue siendo un poco ilegible nuestro código y necesitamos verificar las variables puestas en .format()
correspondan a las que queremos mostrar en nuestro string. Incluso si lo dividimos en varias líneas seguirá perdiendo legibilidad.
A partir de esta versión se introdujeron las f-strings o literals strings, para resolver un poco estos problemas de legibilidad, explicadas más al detalle en PEP498. Si vienes del mundo de JavaScript te resultará muy similar, con la única diferencia que debes colocar la f
al principio de nuestros strings.
course = 'Python'
platform = 'Platzi'
print(f"El nuevo curso de {course} en {platform} está increíble")
El nuevo curso de Python en Platzi está increíble
¿No notas una gran diferencia ahora? Tenemos una línea más corta, más legible. Nos da la oportunidad de llamar funciones o métodos, por ejemplo si quisiéramos colocar course
en mayúsculas.
print(f"El nuevo curso de {course.upper()} en {platform} está increíble")
El nuevo curso de PYTHON en Platzi está increíble
Ya que las f-strings son evaluadas al momento de la ejecución tenemos la posibilidad de colocar cualquier expresión válida.
print(f"{100 + 28}")
128
print(f"{25 * 7}")
175
Si necesitamos dividir nuestro mensaje en múltiple líneas podemos hacerlo de esta forma.
message = (
f"Nuevo curso de {course} "
f"disponible en {platform} "
)
print(message)
Nuevo curso de Python disponible en Platzi
Pero es importante colocar la f
al inicio de cada línea de lo contrario Python imprimirá la línea como texto, con llaves y variables inclusive.
Con las nuevas f-strings tenemos la posibilidad de tener un código más entendible en nuestras cadenas de textos, podemos saber directamente qué variables se van a imprimir sin necesidad de placeholders alejados. Estas son más rápidas que las opciones para versiones anteriores.
Puedes aprender más cosas como variables, condicionales, funciones, clases, decoradores con los cursos de python para data science.
¡Las f-strings de Python son algo parecido a los template literals en JavaScript 😮👏!
Cierto.
Si queremos ver el nombre de una variable y su contenido al mismo tiempo con f-string basta con agregar un igual
name = 'Joe Doe'print(f'{name=}') # Output: "name='Joe Doe'"
Gran aporte!
Justo estoy en el curso de Python viendo strings, gracias!
Genial!
Muchas gracias eso es genial
Llegue a ver esto en su momento
SIZE = 10 f"{len(msg):<{SIZE}}"
Me gustaria saber la funcion que tiene el signo “<” cuando imprimo en pantalla muesta el tamano y unos espacios en blanco
¡Excelente aporte! nos estaba al tanto de esto.
Esto hará mi código mucho mas limpio y legible.
Python 3 ayuda en acortar lineas de codigo.
¡Muchas gracias por la aportación!
Genial!!, me ha servido bastante… ahora ya se 3 formas de concatenar texto 😃
<h4>Concatenar</h4>Ver mas pyformat
Concatenación con (+)
name = "Mauricio" lastName = "Garcia" print(name + lastName) => MauricioGarcia print(name + " " + lastName) => Mauricio Garcia
Concatenación con format
name = "Mauricio" lastName = "Garcia" print("{} {}".format(name, lastName)) => Mauricio Garcia
name = "Mauricio" print("Hola {}, como estas? ".format(name)) =>
Concatenación con f
name = "Mauricio" lastName = "Garcia" print(f"{name} {lastName}") => Mauricio Garcia
Hasta podemos multiplicar textos
name = "Mauricio" lastName = "Garcia" print(name * 3) => MauricioMauricioMauricio
Wow necesitaba esto para dar mi siguiente paso en el mundo de la programación, gracias!
Excelente gracias por la explicación.
Me recordo a javascript