str() e repr() são usados ​​para obter uma representação de string do objeto.

  1. Exemplo de str():
    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

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

    Resultado:

    Olá, Geeks.
    0,181818181818
  2. .

  3. Exemplo de repr():
    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

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

    Resultado:

    'Olá, Geeks.'
    0,18181818181818182

A partir da saída acima, podemos ver se imprimimos string usando a função repr(), em seguida, ela imprime com um par de aspas e, se calcularmos um valor, obtemos um valor mais preciso do que a função str().



A seguir estão as diferenças:

  • str() é usado para criar saída para o usuário final, enquanto repr() é usado principalmente para depuração e desenvolvimento. o objetivo de repr é não ter ambigüidade e str's deve ser legível . Por exemplo, se suspeitarmos que um float tem um pequeno erro de arredondamento, repr irá nos mostrar, enquanto str pode não.
  • repr() calcula a representação de string "oficial" de um objeto (uma representação que tem todas as informações sobre o objeto) e str() é usado para calcular a representação de string "informal" de um objeto (uma representação que é útil para imprimir o objeto).
  • A instrução print e a função interna str() usam __str__ para exibir a representação de string do objeto, enquanto a função interna repr() usa __repr__ para exibir o objeto.

Vamos entender isso por um exemplo: -

import datetime 
today = datetime.datetime.now() 
print (str(today)) 
print (repr(today))      

Resultado:

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

str() exibe a data de hoje de uma forma que o usuário possa entender a data e a hora.

repr() imprime a representação “oficial” de um objeto de data e hora (significa que usando a representação de string “oficial” podemos reconstruir o objeto).

Como fazê-los funcionar para nossas próprias classes definidas?
Uma classe definida pelo usuário também deve ter um __repr__ se precisarmos de informações detalhadas para depuração. E se acharmos que seria útil ter uma versão string para os usuários, criamos uma função __str__.

class Complex: 
  
    
    def __init__(self, real, imag): 
       self.real = real 
       self.imag = imag 
  
    
    def __repr__(self): 
       return 'Rational(%s, %s)' % (self.real, self.imag)     
  
    
    def __str__(self): 
       return '%s + i%s' % (self.real, self.imag)     
  
  
t = Complex(10, 20) 
print (str(t))   
print (repr(t)) 

Resultado:

10 + i20
Racional (10, 20)

Este artigo é uma contribuição de Arpit Agarwal. Se você gosta de GeeksforGeeks e gostaria de contribuir, você também pode escrever um artigo e enviá-lo para contrib@geeksforgeeks.org. Veja o seu artigo que aparece na página principal do GeeksforGeeks e ajude outros Geeks.

Escreva comentários se encontrar algo incorreto ou se quiser compartilhar mais informações sobre o tópico discutido acima