str __str__ __repr__ python string python-2.7 repr

__str__ - str python



Funciones str() vs repr() en python 2.7.5 (1)

Esta pregunta ya tiene una respuesta aquí:

¿ str() es la diferencia entre las funciones str() y repr() en python 2.7.5?

Explicación en python.org:

La función str() está destinada a devolver representaciones de valores que son bastante legibles por humanos , mientras que repr() está destinada a generar representaciones que el intérprete puede leer (o forzará un SyntaxError si no hay una sintaxis equivalente)

Pero no estaba claro para mí.

algunos ejemplos:

>>> s = ''Hello, world.'' >>> str(s) ''Hello, world.'' >>> repr(s) "''Hello, world.''" # repr is giving an extra double quotes >>> str(1.0/7.0) ''0.142857142857'' >>> repr(1.0/7.0) ''0.14285714285714285'' # repr is giving value with more precision

así que quiero saber lo siguiente

  1. ¿Cuándo debería usar str() y cuándo debería usar repr() ?
  2. ¿En qué casos puedo usar cualquiera de ellos?
  3. ¿Qué puede hacer str() qué repr() no puede?
  4. ¿Qué puede repr() hacer qué str() no puede?

¿Cuándo debería usar str () y cuándo debería usar repr ()?

Casi siempre use str() al crear resultados para usuarios finales.

repr() es principalmente útil para la depuración y exploración. Por ejemplo, si sospecha que una cadena tiene caracteres que no se imprimen, o una línea flotante tiene un pequeño error de redondeo, repr() le mostrará; str() no puede.

repr() también puede ser útil para generar literales para pegar en su código fuente. También se puede usar para la persistencia (con ast.literal_eval o eval ), pero esto rara vez es una buena idea: si quiere valores persistentes editables, algo como JSON o YAML es mucho mejor, y si no planea editar ellos, usa pickle.

2. ¿En qué casos puedo usar cualquiera de ellos?

Bueno, puedes usarlos en casi cualquier lugar. En general, no debe usarlos, excepto como se describe anteriormente.

3. ¿Qué puede str() hacer qué repr() no puede?

Proporcione un ajuste de salida para el consumo del usuario final, no siempre (p. Ej., Str ([''spam'', ''eggs'']) no es probable que sea algo que quiera poner en una GUI, pero con más frecuencia que repr()

4. ¿Qué puede repr() hacer qué str() no puede

Proporcione un resultado que sea útil para la depuración; de nuevo, no siempre (el valor predeterminado para instancias de clases creadas por el usuario raramente es útil), pero siempre que sea posible.

Y a veces le da salida que es un literal de Python válido u otra expresión, pero rara vez quiere confiar en eso excepto para la exploración interactiva.