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 yf"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 bloqueif
(bloque_true
) serán ejecutadas. - Si la
condicion
es falsa, Las declaraciones del bloqueelse
(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 cuandocondicion
es verdadera, y el<bloque false>
se ejecutara cuandocondicion
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 quenum
es par y retornaraFalse
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 cadenaautor
- 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 cadenaautor
, 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()
.