Qué significa %s en Python: ¡secreto revelado!

%s es un especificador de argumento y se usa para dar formato a cadenas. Toma prestada su sintaxis del lenguaje C. En pocas palabras, le permite agregar un valor dentro de una cadena.

El valor puede ser una cadena o cualquier objeto que pueda convertirse en una cadena, por ejemplo, número, lista, etc.

 



Todos los valores de cadena

Considere el siguiente ejemplo.

 

name = input("Please insert your name: ")
song = input("What is your favorite song? " )
print("Hello %s! Would you like to listen to %s?" %(name, song))

 

En el ejemplo anterior, tomamos el nombre y la canción favorita del usuario y mostramos un mensaje usando estos valores.

Además, ponemos %s como marcador de posición en aquellos lugares donde desea valores de variables.

Una tupla que contiene valores sigue la cadena de formato, es decir, %(nombre, canción) . Recuerde insertar valores en el mismo orden en que desea mostrarlos. En este caso, el nombre primero vendrá y luego el canción .

A continuación se muestra un resultado de muestra del ejemplo anterior.

 

Please insert your name: ashton
What is your favorite song? Perfect
Hello ashton! Would you like to listen to Perfect?

Como puede ver, esto funciona como se esperaba.

 

Un solo valor

Si solo tenemos uno %s , entonces podemos escribir un valor sin una tupla. Vamos a ver.

 

name = input("Please insert your name: ")
print("Hello %s!" % name)

 

Producción

 

Please insert your name: Agar
Hello Agar!

 

Objetos con una representación de cadena

Como ya se mencionó, un valor puede ser cualquier objeto que pueda convertirse en una cadena. Tomemos un ejemplo.

 

name = "Smith"
score = [70, 80, 90, 100]
print("The score of %s in the last four matches: %s" % (name, score))

 

Producción

 

The score of Smith in the last four matches: [70, 80, 90, 100]

 

Como puede observar, colocamos una cadena y una lista usando el %s especificador de argumento Convierte la lista en una cadena automáticamente.

Tomemos el mismo ejemplo y hagámoslo usando el operador de concatenación.

 

name = "Smith"
score = [70, 80, 90, 100]
print("The score of " + name + " in the last four matches " + str(score))

 

Producción

The score of Smith in the last four matches [70, 80, 90, 100]

Aquí, a diferencia de %s, convertimos explícitamente la lista en una cadena y usamos + en cada lugar queremos agregar un valor.

 

Error de tecleado

Además, el número de especificadores de argumentos debe ser el mismo que el número de valores en la tupla. Si no lo son, obtendrá un error. Vamos a ver.

 

name = input("Please insert your name: ")
song = input("What is your favorite song? " )
print("Hello %s! Would you like to listen to %s?" %(name))

 

Producción

 

  ¿Qué significa %s en Python?

¿Qué significa %s en Python?

Como puede ver en el resultado anterior, el programa lanza un Error de tecleado .

 

Clave de mapeo

En lugar de recordar el orden en el que desea insertar valores, puede pasar un clave de mapeo a %s . Considere el siguiente ejemplo para entender este concepto.

 

name = "Ashton Agar"
age  = 20
print("My name is %(name)s and my age is %(age)s." %{"age":age, "name":name})

 

Producción

 

My name is Ashton Agar and my age is 20.

 

En el ejemplo anterior, pasamos un diccionario que contiene pares (clave, valor) en lugar de una tupla. Además, la llave se coloca entre los % y s , que se reemplaza por su valor más adelante. Por lo tanto, no necesitamos recordar el orden.

%s es un método antiguo para formatear cadenas. Mejores técnicas como formato() y cuerdas f se han introducido que son más fáciles de usar y proporcionan más funcionalidades.