Saltar a contenido

Uso de f-strings

Las f-strings son una característica de Python que permite la interpolación de variables y expresiones1 en una cadena de caracteres de una manera más concisa y legible.

Se introdujeron en Python 3.6 y proporcionan una forma concisa y conveniente de incrustar expresiones dentro de cadenas de caracteres para su formateo.

La traducción de f-string al español podría ser "cadena f" o "cadena de formato". Sin embargo, en la mayoría de los contextos de programación, se utiliza el término en inglés f-string, ya que es una característica específica de Python y su nombre no se traduce comúnmente.

Las f-strings se crean incluyendo una f o F antes de la cadena de caracteres y colocando las variables, llamadas a funciones, expresiones y cualquier otro elemento que quieres formatear entre llaves { } dentro de la cadena.

Python reemplazará las llaves y su contenido por el valor obtenido luego de procesar dicho contenido.

Aquí tienes un ejemplo de cómo se utilizan las f-strings:

Python
nombre = "Pablo"
edad = 45

mensaje = f"Hola, mi nombre es {nombre} y tengo {edad} años."
print(mensaje)  

En este caso, {nombre} y {edad} son expresiones que se evalúan y se insertan en la cadena de texto.

Terminal (Entrada/Salida)
Hola, mi nombre es Pablo y tengo 45 años.
_

También es posible procesar la f-string directamente en la función print():

Python
nombre = "Pablo"
edad = 45

print(f"Hola, mi nombre es {nombre} y tengo {edad} años.")  

La salida en pantalla será la misma que en el ejemplo anterior.

¡Para recordar!

Las f-strings son una forma conveniente de formatear cadenas de caracteres en Python. Recuerda que la f al principio de la cadena de formato indica que se trata de una f-string, que permite la interpolación de variables y expresiones1 en una cadena de caracteres. Y que dicha interpolación se realiza entre llaves {} dentro de la cadena de caracteres.

Las f-strings pueden contener expresiones arbitrarias, lo que significa que puedes incrustar cualquier código de Python que produzca un valor dentro de las llaves.

Hola, Mundo! - Parte 5: uso de f-strings

Si recordamos nuestro primer programa: "Hola, Mundo!":

hola_mundo.py

Sobre el cual luego personalizamos el saludo para que el programa saludara al usuario por su nombre:

hola_mundo.py

Podremos notar que el uso de f-strings simplificaría la escritura de cadenas de caracteres que contienen variables, ya que permite incrustar expresiones dentro de la cadena de texto de una manera más clara y concisa.

Asi que tenemos otra manera de resolver este ejercicio, que quizás sea la que se hace con más frecuencia ahora o al menos la más elegante cuando se trata de trabajar con varias cadenas de caracteres al mismo tiempo.

La sintaxis indica que Literalmente puedes poner, no el nombre de la variable dentro de la cadena, porque ya vimos que esto estaría mal, ya que Si haces esto, verás literalmente Hola, coma, nombre y signo de exclamación.

¿Pero qué pasa si hacemos esto esto?

hola_mundo.py

¿Qué pasa si ponemos llaves alrededor del nombre de la variable?

Primero, observemos que el color de las llaves y su contenido cambia respecto del resto de la cadena de caracteres. Esto indica que se le dará un tratamiento diferente a ese conjunto de caracteres de distinto color.

Aún no hemos terminado de completar el código pero hagamos una ejecución del programa para ver como se comporta:

Terminal (Entrada/Salida)
¿Cuál es tu nombre? Pablo
Hola, {nombre}! 

A pesar de tener un color diferente, el texto se ha impreso tal como se ha escrito dentro de la cadena de caracteres. Esto ha ocurrido porque Python no ha interpretado el contenido de las llaves como una variable aún, sino como una cadena de caracteres, puesto que no se ha indicado que se trata de una f-string (cadena de formato o cadena F), por lo que no se ha realizado la interpolación de la variable nombre dentro de la cadena de texto.

Para que Python interprete el contenido de las llaves como una variable y realice la interpolación de la misma dentro de la cadena de texto, debemos indicar que se trata de una f-string. Y para ello, debemos colocar una f o F antes de la cadena de caracteres, justo antes de la primera comilla:

hola_mundo.py

Esto le indica al intérprete de Python que formatee el contenido de la cadena de una manera especial. Ahora, si ejecutamos el programa, veremos que el resultado es el esperado:

Terminal (Entrada/Salida)
¿Cuál es tu nombre? Pablo
Hola, Pablo! 

Expresiones en f-strings

Las f-strings también pueden contener expresiones arbitrarias dentro de las llaves, que se evaluarán y luego se convertirán en una cadena.

Por ejemplo:

Python
a = 5
b = 10
print(f"La suma de {a} y {b} es {a + b}.")

La salida de este código sería:

Terminal (Entrada/Salida)
La suma de 5 y 10 es 15.

¡Bienvenidas las f-strings!

Esta sintaxis para escribir cadenas de caracteres interpoladas es una gran característica de Python 3 y debes aprovecharla.

Te vas a ahorrar muchos dolores de cabeza a la hora de concatenar diferentes tipos de dato a la hora de mostrar información en pantalla o crear una cadena de texto para utilizarla en expresiones o almacenarla en una variable, por ejemplo.

Uso de f-strings para formatear números

Recordemos que podemos imprimir un número directamente en una cadena de caracteres formateada (f-string), colocando dicho número entre llaves:

Python
numero = 1000
print(f"El número es {numero}")
Terminal (Entrada/Salida)
El número es 1000

Podemos observar que se imprime el número 1000. Este no es un número tan grande para decodificar su lectura, y sin embargo podríamos facilitar su lectura si lo formateamos de la siguiente manera: 1.000; y si fuera un número más grande, como 1.000.000 por ejemplo, sería aún más útil; y si además tuviera decimales, como 1.000.000,50 por ejemplo, sería aún más útil.

En Estados Unidos se tiende a formatear números largos poniendo comas antes o después de cada tres dígitos y el punto para separar los decimales, al revés que nosotros, aquí en Argentina.

Esta es una configuración regional del sistema operativo. Esta configuración puede cambiarse directamente en tu computadora o dispositivo que ejecute Python según tu conveniencia.

Configuración del separador de miles

Veamos un ejemplo de como se comporta:

Python
numero = float(1000)
print(f"{numero}")

print(f"{numero:,}")

La salida de este programa sería:

Terminal (Entrada/Salida)
1000.0
1,000.0

En el primer caso, se imprime el número 1000.0 tal como se ha definido. En el segundo caso, se imprime el número 1000.0 con el formato de separación de miles, es decir, con la coma como separador de miles.

Si analizamos la expresión {numero:,} podremos notar que es bastante críptica. Y para comprender cual es el funcionamiento podríamos consultar la documentación oficial de Python sobre f-strings aquí.

Sin embargo, es importante recordar que la f-string nos permite formatear cadenas de caracteres de manera sencilla y legible. Y en este caso específico, nos permite formatear números con una coma separadora de miles, colocando :, después del número a formatear. Los dos puntos : indican que se realizará un formateo especial, y la coma , indica que se utilizará una coma como separador de miles.

Aquí tenemos una pista de lo que significa realmente formatear una cadena. Ahora estudiaremos otras formas más poderosas, robustas y versátiles de formatear cadenas.

Ejercicios

  1. Escribe un programa que solicite el ingreso por teclado de datos referidos al nombre, la edad y la nacionalidad de una persona. Luego que imprima por pantalla una cadena de formato de la siguiente manera:

    Terminal (Entrada/Salida)
    Hola {nombre}! Tienes {edad} años. Eres de nacionalidad {nacionalidad}.
    
    Haz clic aquí para ver la solución propuesta
    Python
    nombre = input("Ingrese su nombre: ")
    edad = input("Ingrese su edad: ")
    nacionalidad = input("Ingrese su nacionalidad: ")
    
    print(f"Hola {nombre}! Tienes {edad} años. Eres de nacionalidad {nacionalidad}.")
    

  2. Escribe un programa que solicite el ingreso por teclado de datos referidos al nombre, la dirección y el teléfono de una persona. Luego que imprima por pantalla una cadena de formato de la siguiente manera:

    Terminal (Entrada/Salida)
    Nombre: {nombre}
    Dirección: {direccion}
    Teléfonno: {telefono}
    

    La impresión en pantalla se debe realizar utilizando una sola función print().

    Haz clic aquí para ver la solución propuesta
    Python
    nombre = input("Ingresa tu nombre: ")
    direccion = input("Ingresa tu direccion: ")
    telefono = input("Ingresa tu telefono: ")
    
    print(f"Nombre: {nombre} \nDireccion: {direccion} \nTelefono: {telefono}")
    

    Otra manera de resolver el ejercicio sería:

    Python
    nombre = input("Ingresa tu nombre: ")
    direccion = input("Ingresa tu direccion: ")
    telefono = input("Ingresa tu telefono: ")
    
    print(f"Nombre: {nombre}", f"Direccion: {direccion}", f"Telefono: {telefono}", sep="\n")
    

    Recuerda que la secuencia de escape \n como valor del parámetro sep le indica a la función print() que debe hacer un salto de línea al terminar de imprimir cada uno de los argumentos suministrados.

  3. Refactoriza2 el siguiente programa para que devuelva la misma salida, pero utilizando un solo argumento, sin emplear casting ni concatenaciones:

    Python
    print("El resultado de 3 + 5 es", 3+5)
    
    Haz clic aquí para ver la solución propuesta
    Python
    print(f"El resultado de 3 + 5 es {3+5}")
    

    En este caso, se utilizó una f-string para formatear la cadena de texto y se incluyó la expresión 3+5 dentro de las llaves para que Python la evalúe y la reemplace por el resultado de la operación aritmética.

Referencias


  1. La interpolación de variables es una técnica utilizada en programación durante el procesamiento de texto para insertar el valor de una variable dentro de una cadena de texto. En lugar de construir cadenas de texto manualmente concatenando fragmentos de texto con valores de variables, la interpolación permite insertar estos valores de manera directa y más legible. Este nombre es generalizado y representa a la interpolación de variables y expresiones en una cadena de caracteres. 

  2. Refactorizar es el proceso de modificar la lógica y el código de un programa existente para mejorar su estructura interna sin cambiar su comportamiento externo. El objetivo de refactorizar es mejorar la legibilidad del código, reducir la complejidad y facilitar el mantenimiento del mismo a largo plazo.

    La refactorización se realiza en pequeños pasos incrementales para minimizar el riesgo de introducir errores en el sistema.