Una de las primeras funciones que aprendimos a utilizar en Python fue print(). En primer lugar, recordemos que la misma nos permite mostrar un mensaje por pantalla. Dicho mensaje puede consistir en una cadena de texto o en una serie de variables tipo string concatenadas. Para facilitar esta operación y obtener código que pueda leerse más fácilmente, en este post y en el siguiente explicaremos el concepto de formato de strings en Python.
Formato de strings
Para empezar, consideremos el siguiente ejemplo:
nombre = 'Sergio' edad = 39 profesion = 'administrador de sistemas'
Para mostrar el mensaje Mi nombre es Sergio. Tengo 39 años y soy administrador de sistemas podríamos hacer lo siguiente:
print('Mi nombre es ' + nombre + '. Tengo ' + str(edad) + ' años y soy ' + profesion)
Aunque en este ejemplo solamente utilizamos 3 variables, podemos ver que la concatenación de strings puede llegar a ser un tanto engorrosa.
Para solucionar este inconveniente, Python provee la posibilidad de realizar la sustitución y el formato de strings con la función format() de la siguiente manera:
print('Mi nombre es {0}. Tengo {1} años y soy {2}'.format(nombre, edad, profesion))
o
print('Mi nombre es {}. Tengo {} años y soy {}'.format(nombre, edad, profesion))
En el primer caso, se utilizan {0}, {1}, y {2} para representar (en ese orden) los argumentos que se le pasan a la función format(). A partir de Python 3.1, no es estrictamente necesario incluir el número dentro de las llaves y se puede utilizar simplemente {}. Por suerte, Python es lo suficientemente «inteligente» como para reconocer que en el lugar donde encuentre el primer par de llaves {} debe colocar el primer argumento que se le pasó a format(), y así sucesivamente.
En la Fig. 1 podemos ver el resultado de los ejemplos anteriores:
Como podemos ver, el mensaje final es idéntico en los tres casos. Por último, la pregunta natural que sigue es, ¿qué opción utilizaremos? La respuesta es simple: la que nos sea más cómoda, aunque yo creo que la última es más fácil de leer.
Espero que este post les haya resultado útil. Para aprender más sobre el tema no se pierdan el próximo.