__str__ - str python
Funciones str() vs repr() en python 2.7.5 (1)
Esta pregunta ya tiene una respuesta aquí:
- Diferencia entre __str__ y __repr__? 21 respuestas
¿ 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 querepr()
está destinada a generar representaciones que el intérprete puede leer (o forzará unSyntaxError
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
- ¿Cuándo debería usar
str()
y cuándo debería usarrepr()
? - ¿En qué casos puedo usar cualquiera de ellos?
- ¿Qué puede hacer
str()
quérepr()
no puede? - ¿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.