¿Cuál es la diferencia entre% r,% sy% d en python?

Bueno, siempre uso% r en python, pero no sé cuándo tengo que usar estos otros formatos …

Esto se explica en la documentación de Python . En breve,

  • %d formateará un número para mostrar.
  • %s insertará la representación de cadena de presentación del objeto (es decir, str(o) )
  • %r insertará la representación de cadena canónica del objeto (es decir, repr(o) )

Si está formateando un entero, entonces estos son equivalentes. Para la mayoría de los objetos este no es el caso.

Aquí hay un ejemplo para complementar la respuesta de James Henstridge:

 class Cheese(float): def __str__(self): return 'Muenster' def __repr__(self): return 'Stilton' chunk = Cheese(-123.4) print(str(chunk)) # Muenster print(repr(chunk)) # Stilton print(int(chunk)) # -123 print('%s\t%r\t%d'%(chunk, chunk, chunk)) # Muenster Stilton -123