45

Qué son las f-strings en Python

112850Puntos

hace 5 años

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.

Versiones anteriores

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.

f-strings, Python 3.6 en adelante.

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.

Kevin
Kevin
iKenshu

112850Puntos

hace 5 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
8
212921Puntos

¡Las f-strings de Python son algo parecido a los template literals en JavaScript 😮👏!

3
27051Puntos

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'"
2
14853Puntos

Gran aporte!

Justo estoy en el curso de Python viendo strings, gracias!

1
4426Puntos

Excelente gracias por la explicación.

1

Wow necesitaba esto para dar mi siguiente paso en el mundo de la programación, gracias!

1
10585Puntos

¡Excelente aporte! nos estaba al tanto de esto.
Esto hará mi código mucho mas limpio y legible.

1
28310Puntos

Shit negro! that’s all you had to say!

Volviendo a Python en 3…2…1…

1
9143Puntos

¡Muchas gracias por la aportación!

1
27Puntos

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

1
985Puntos

Genial!!, me ha servido bastante… ahora ya se 3 formas de concatenar texto 😃

<h4>Concatenar</h4>
SintaxisDescripción
var1 + " " + var2Podemos concatenar con el operador +
“{} text {}”.format(var1)Para cada “{}” va a ir una variable
f"{var1} text {var2}"En cada “{}” va a ir una variable

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
name = "Mauricio"
print(f"Hola {name}, como estas? ")
=> Hola Mauricio, como estas?

Hasta podemos multiplicar textos

name = "Mauricio"
lastName = "Garcia"
print(name * 3)
=> MauricioMauricioMauricio