Artículo original escrito por Bala Priya C
Artículo original Python f-String Tutorial – String Formatting in Python Explained with Code Examples
Traducido y adaptado por Franciscomelov

Al querer dar formato o mostrar una cadena texto en Python, probablemente hayas usado el método format().

Pero a partir de la versión 3.6 se introdujo f-Strings. También llamado formatted string literals ó Formateo literal de cadenas, f-Strings tiene una sintaxis simple y fluida que hará más sencillo el darle formato a cadenas de texto.

En este tutorial, aprenderás sobre f-strings en Python y diferentes formas de darle formato a cadenas de texto

¿Qué son f-Strings en Python?

En Python, una cadena de texto normalmente se escribe entre comillas dobles ("") o comillas simples (''). Para crear f-strings, solo tienes que agregar la letra f o F mayúscula antes de las comillas.

Por ejemplo, "esto" es una cadena de texto normal y f"esto" es una f-string.

Como imprimir variables usando f-strings en Python

Si quieres mostrar variables utilizando f-strings, solo tienes especificar el nombre de las variables entre llaves {}. Y al ejecutar tu código, todos los nombres de las variables serán remplazados con sus respectivos valores.

En caso de tener multiples variables en tu cadena de texto, cada variable necesita llaves propias {}

Aquí puedes ver la sintaxis:

f"Esta es una f-string {nombre_var} y {nombre_var}."

▶ Ejemplo de una f-string.

Tienes dos variables lenguaje y escuela, entre llaves, dentro de una f-string.

lenguaje = "Python"
escuela = "freeCodeCamp"
print(f"Estoy aprendiendo {lenguaje} en {escuela}.")

El resultado es el siguiente:

# Salida
Estoy aprendiendo Python en freeCodeCamp.

Puedes ver como las variables  lenguaje y escuela han sido reemplazadas con Python y freeCodeCamp, respectivamente.

Como evaluar expresiones en Python con f-Strings

Como las f-Strings son evaluadas al momento de ejecución (cuando se está ejecutando el código Python), bien podrías usar una f-string para evaluar expresiones válidas.

▶ En el siguiente ejemplo. num1 ynum2 son nuestras variables, para obtener el producto de estas variables únicamente basta con escribir la siguiente expresión num1 * num2 dentro de llaves.

num1 = 83
num2 = 9
print(f"El producto de {num1} y {num2} es {num1 * num2}.")

Puedes ver como num1 * num2 es reemplazado  por el producto de num1 ynum2 a la hora de ejecutar el código.

# Salida 
El producto de 83 y 9 es 747.

Espero y puedas ver el patrón al momento de utilizar f-Strings.

En cualquier f-string,  {var_nombre} y {expresion} se sustituirán  por los valores que representan  o por el valor resultante de una operación en el momento de ejecución (cuando se está ejecutando el código Python).

Sigue leyendo para aprender más de f-Strings.

Como usar condicionales en Python con f-strings

Empecemos dando un repaso a las declaraciones if..else. La sintaxis básica es la siguiente:

if condicion:
  # Haz esto si la condicion es verdadra/true <bloque_true>
else:
  # Haz esto di la condicion es falsa/false <bloque_false>

Aquí, condicion es la expresión a la cual evaluaremos su valor booleano,

  • Si la condicion es verdadera, las declaraciones del bloque if  (bloque_true) serán ejecutadas.
  • Si la condicion es falsa, Las declaraciones del bloque else (bloque_false) serán ejecutadas.

Hay otra alternativa a la sintaxis if..else, la cual puede ser escrita en una sola línea con la sintaxis siguiente.

<bloque_true> if <condicion> else <bloque_false>
En la sintaxis anterior, el <bloque true> es ejecutado cuando condicion es verdadera, y el <bloque false> se ejecutara  cuando condicion sea falsa

La sintaxis anterior  puede parecer complicada si no la habías visto antes, talvez el siguiente ejemplo sea un poco más sencillo.

<bloque_true> if <condicion> else <bloque_false>
<Haz esto> si la <condicion es verdadera>; si no , <haz esto otro>


Comúnmente en Python  a esta declaración se le llama operador ternario⁣, ya que toma tres operadores, el <bloque true>,  <condición> y el <bloque false>

▶ Veamos un ejemplo sencillo utilizando el operador ternario.

Dado un número num, te gustaría saber si es par. Sabemos si un número es par si es divisible entre 2.

Escribamos nuestro código:

num = 87;
print(f"¿num es par? {True if num%2==0 else False}")

En el código anterior:

  • num%2==0 es la condición.
  • Si la condición es true/verdadera, se retornara True indicando que num es par y retornara False si la condición es False/falsa
#Salida
¿num es par? False

En el ejemplo anterior,  num es 87, un número impar, por lo tanto, la declaración if dentro del f-string es remplazada con False

Ahora probemos con un número diferente.

num = 10;
print(f"¿num es par? {True if num%2==0 else False}")

#salida
¿num es par? True

Como llamar métodos en Python con f-Strings

Hasta ahora hemos visto como imprimir el valor de una variable, evaluar una expresión y como usar condicionales dentro de f-strings. Es hora de pasar al siguiente nivel.

▶ Analiza el siguiente ejemplo:

autor = "gabriel garcia"
print(f"libro escrito por {autor}.")

El código anterior imprime en pantalla libro escrito por gabriel garcia.

¿No sería mejor imprimir libro escrito por Gabriel Garcia?.  Bueno, con Python podemos lograrlo,  los métodos de cadenas retornan una cadena de texto con los cambios requeridos en el método utilizado.

En el caso del método title(), Python retorna una nueva cadena con un formato de título, esto es con la primera letra de cada palabra en mayúsculas ("Gabriel Garcia" en lugar de "gabriel garcia")

Para imprimir el nombre del autor con un formato de título puedes hacer lo siguiente:

  • Usa el método title() en la cadena autor
  • guarda la nueva cadena retornada dentro de otra variable e
  • imprime la nueva variable dentro de una f-string

Ejemplo del código:

autor = "gabriel garcia"
nuevo_nombre = autor.title()
print(f"libro escrito por {nuevo_nombre}.")

#Salida
libro escrito por Gabriel Garcia.

Sin embargo, con f-strings podemos ahorrarnos un paso, solo tienes que llamar al método title() en la cadena autor  dentro de la f-string.

autor = "gabriel garcia"
print(f"libro escrito por {autor.title()}.")

Cuando se analiza la cadena al momento de ejecución ocurre lo siguiente:

  • El método title() es llamado en la cadena autor, y
  • la cadena retornada con un formato de título es impresa.

Aquí puedes verificar el resultado del código anterior:

autor = "gabriel garcia"
print(f"libro escrito por {autor.title()}.")

# Salida
libro escrito por Gabriel Garcia.

Puedes llamar cualquier método en un objeto válido de Python entre llaves y tu código funcionará perfectamente.

Como llamar funciones dentro de f-Strings en Python

Aparte de poder llamar métodos en un objeto de Python, también puedes llamar funciones con f-strings. Y funciona de forma similar a los ejemplos anteriores.

Al igual que el nombre las variables son reemplazadas por sus valores y las expresiones son reemplazadas por el resultado de las operaciones, una función es reemplazada por el valor que retorna la función.

▶ Tomemos la función opcion() en el siguiente ejemplo:

def opcion(o):
  if o%2 ==0:
    return "aprende Python!"
  else:
    return "aprende JavaScript!"

La función anterior retorna "aprende Python! si es llamada con un número par como argumento. Y retorna "aprende JavaScript!" cuando el argumento con el cual se llama a la función es un número impar.

▶En el siguiente ejemplo, tienes una f-string, entre llaves que llama a la función opcion():

print(f"Hola Python, dime que deberia aprender. {opcion(3)}")

Ya que el argumento es un número impar (3), Python nos da la opción de aprender JavaScript. Aquí está el resultado del código:

# Salida
Hola Python, dime que deberia aprender. aprende JavaScript!

Si llamas a la función opcion() con un número par, Python ahora te dirá que aprendas Python. ?

print(f"Hola Python, dime que deberia aprender. {opcion(10)}")
# Salida
Hola Python, dime que deberia aprender. aprende Python!

Y así termina nuestro tutorial.
¡Espero lo hayas disfrutado!

Conclusión

En este tutorial aprendiste, como usar f-Strings para:

  • Imprimir el valor de variables.
  • Evaluar expresiones,
  • Llamar a métodos en objetos de Python
  • Llamar a funciones de Python.

Artículos relacionados

Aquí hay un artículo traducido por Andres, donde explica como darle formato a cadenas de texto con el método format().