versus machine learning for python

machine - Python, el camino difícil: ejercicio 6-% r versus% s



r vs python 2018 (7)

http://learnpythonthehardway.org/book/ex6.html

Zed parece usar %r y %s indistintamente aquí, ¿hay alguna diferencia entre los dos? ¿Por qué no solo usas %s todo el tiempo?

Además, no estaba seguro de qué buscar en la documentación para encontrar más información sobre esto. ¿Qué son %r y %s llamados exactamente? ¿Formateo de cadenas?


El código a continuación ilustra la diferencia. El mismo valor se imprime de manera diferente:

x = "xxx" withR = "prints with quotes %r" withS = "prints without quotes %s"


El siguiente es un resumen de los tres ejemplos de código anteriores.

# First Example s = ''spam'' # "repr" returns a printable representation of an object, # which means the quote marks will also be printed. print(repr(s)) # ''spam'' # "str" returns a nicely printable representation of an # object, which means the quote marks are not included. print(str(s)) # spam # Second Example. x = "example" print ("My %r" %x) # My ''example'' # Note that the original double quotes now appear as single quotes. print ("My %s" %x) # My example # Third Example. x = ''xxx'' withR = ("Prints with quotes: %r" %x) withS = ("Prints without quotes: %s" %x) print(withR) # Prints with quotes: ''xxx'' print(withS) # Prints without quotes: xxx


Se llaman operaciones de formateo de cadenas .

La diferencia entre% sy% r es que% s usa la función str y% r usa la función repr . Puede leer sobre las diferencias entre str y repr en esta respuesta , pero para los tipos incorporados, la mayor diferencia en la práctica es que repr para cadenas incluye comillas y se escapan todos los caracteres especiales.


%r llama a repr , mientras que %s llama a str . Estos pueden comportarse de manera diferente para algunos tipos, pero no para otros: repr devuelve "una representación imprimible de un objeto", mientras que str devuelve "una representación muy imprimible de un objeto". Por ejemplo, son diferentes para cadenas:

>>> s = "spam" >>> print(repr(s)) ''spam'' >>> print(str(s)) spam

En este caso, la repr es la representación literal de una cadena (que el intérprete de Python puede analizar en un objeto str ), mientras que la str es solo el contenido de la cadena.


%s => cadena

%r => exactamente como es

Usando el código en el libro:

my_name = ''Zed A. Shaw'' print "Let''s talk about %s." % my_name print "Let''s talk about %r." % my_name

obtenemos

Let''s talk about Zed A. Shaw. Let''s talk about ''Zed A. Shaw''.



x = "example" print "My %s"%x My example print "My %r"%x My ''example''

Está bien explicado en las respuestas anteriores. Intenté mostrar lo mismo con un simple ejemplo.