No começo dessa série, vimos como transformar uma String num Int ou Float no Python. Agora, desejamos o contrário. Como fazer?
Dentro do Python existem duas formas de transformar um valor qualquer numa string: as funções repr() e str().
Definições das funções str() e repr() no Python
A função str() é utilizada para criar representações de valor que as pessoas consigam entender. Já a função repr() é utilizada para criar valores que o interpretador do Python possa utilizar.
A maior parte dos valores, como inteiros, estruturas de listas e dicionários acabam tendo a mesma representação quando se utiliza qualquer uma das funções. Já Floats e Strings são representados de formas diferentes entre as funções.
A única diferença entre as duas funções é a forma que elas apresentam os valores? Na verdade, não. Vamos observar a questão um pouco mais a fundo.
Principais diferenças entre str() e repr()
Da documentação oficial do Python, sabemos que repr() e str() são usadas para “representar” um objeto. A str() é considerada uma representação “informal”. A função repr() seria a representação “formal”.
Abaixo mostramos alguns exemplos em que podem ser observadas algumas destas diferenças:
1 2 3 4 5 6 7 8 9 |
s = 'Hello, world.' str(s) 'Hello, world.' repr(s) "'Hello, world.'" str(1.0/7.0) '0.142857142857' repr(1.0/7.0) '0.14285714285714285' |
Esta diferença entre os valores retornados nos exemplos acima pode ser evidenciada dentro do sistema que o retorno padrão da função repr() para um objeto pode ser chamada como um argumento dentro da função eval() e seu retorno seria um objeto válido. Podemos observar isto no exemplo abaixo:
1 | >>> y = ‘a string’ |
2
3 4 5 6 |
>>> repr(y)
“‘a string'” >>> y2 = eval(repr(y)) >>> y == y2 True |
Já o retorno da função str() não se mostra válido. Exemplo abaixo:
1 | >>> y = ‘a string’ |
2
3 4 5 6 7 8 9 10 |
>>> str(y)
‘a string’ >>> eval(str(y)) Traceback (most recent call last): File “<stdin>”, line 1, in <module> File “<string>”, line 1 a string ^ SyntaxError: unexpected EOF while parsing |
Portanto, a representação “formal” do objeto pode ser chamado pela função eval(), e deve retornar o mesmo objeto, se for o caso.
Para que usar a representação informal str() no Python?
Ela apresenta uma resposta mais resumida do valor do objeto. Com objetos complexos, com vários argumentos, por exemplo, a função repr() retorna um valor difícil de ser analisado. Caso estejamos procurando somente uma “visão rápida”, o melhor a utilizar é a função str().
Use a área de comentários abaixo para compartilhar outras dicas ou dúvidas sobre este assunto! Caso deseje navegar mais em outros assuntos, você, pode conferir nossa galeria de vídeos sobre Python. Abaixo estão alguns exemplos:
Você também pode se inscrever em alguns canais que fazem broadcast em Python, como os a seguir:
Outra maneira interessante de descobrir mais coisas interessantes sobre Python é acessar nossa página de projetos