str() frente a repr() en Python

str() y repr() se usan para obtener una representación de string del objeto.

  1. Example of str():

    s = 'Hello, Geeks.'
    print (str(s))
    print (str(2.0/11.0))

    Producción:

    Hello, Geeks.
    0.181818181818
  2. .

  3. Example of repr():

    s = 'Hello, Geeks.'
    print (repr(s))
    print (repr(2.0/11.0))

    Producción:

    'Hello, Geeks.'
    0.18181818181818182

De la salida anterior, podemos ver si imprimimos una string usando la función repr(), luego se imprime con un par de comillas y si calculamos un valor, obtenemos un valor más preciso que la función str().

Las siguientes son diferencias:

  • str() se usa para crear resultados para el usuario final, mientras que repr() se usa principalmente para la depuración y el desarrollo. El objetivo de repr es ser inequívoco y el de str es ser legible . Por ejemplo, si sospechamos que un float tiene un pequeño error de redondeo, repr nos mostrará mientras que str no.
  • repr() calcula la representación de string «oficial» de un objeto (una representación que tiene toda la información sobre el objeto) y str() se usa para calcular la representación de string «informal» de un objeto (una representación que es útil para imprimir el objeto).
  • La declaración de impresión y la función integrada str() usan __str__ para mostrar la representación de string del objeto, mientras que la función integrada repr() usa __repr__ para mostrar el objeto.

Entendamos esto con un ejemplo: –

import datetime
today = datetime.datetime.now()
  
# Prints readable format for date-time object
print (str(today))
  
# prints the official format of date-time object
print (repr(today))     

Producción:

2016-02-22 19:32:04.078030
datetime.datetime(2016, 2, 22, 19, 32, 4, 78030)

str() muestra la fecha de hoy de manera que el usuario pueda entender la fecha y la hora.

repr() imprime la representación «oficial» de un objeto de fecha y hora (significa que usando la representación de string «oficial» podemos reconstruir el objeto).

¿Cómo hacer que funcionen para nuestras propias clases definidas?
Una clase definida por el usuario también debe tener un __repr__ si necesitamos información detallada para la depuración. Y si pensamos que sería útil tener una versión de string para los usuarios, creamos una función __str__.

# Python program to demonstrate writing of __repr__ and
# __str__ for user defined classes
  
# A user defined class to represent Complex numbers
class Complex:
  
    # Constructor
    def __init__(self, real, imag):
       self.real = real
       self.imag = imag
  
    # For call to repr(). Prints object's information
    def __repr__(self):
       return 'Rational(%s, %s)' % (self.real, self.imag)    
  
    # For call to str(). Prints readable form
    def __str__(self):
       return '%s + i%s' % (self.real, self.imag)    
  
  
# Driver program to test above
t = Complex(10, 20)
  
# Same as "print t"
print (str(t))  
print (repr(t))

Producción:

10 + i20
Rational(10, 20)

Este artículo es una contribución de Arpit Agarwal. Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo electrónico a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *