Una breve discusión sobre la diferencia entre Python str() y repr()

 

Este artículo presenta principalmente la diferencia entre Python str() y repr() a través de ejemplos. El artículo la presenta en detalle a través de código de ejemplo. Tiene cierto valor de aprendizaje de referencia para el estudio o trabajo de todos. Los amigos que lo necesiten pueden consultarlo.

Este artículo presenta principalmente la diferencia entre Python str() y repr() a través de ejemplos. El artículo la presenta en detalle a través de código de ejemplo. Tiene cierto valor de aprendizaje de referencia para el estudio o trabajo de todos. Los amigos que lo necesiten pueden consultarlo.

la diferencia

De hecho, la mayor diferencia es su practicidad: str() se usa principalmente para enviar información al usuario final, mientras que repr() se usa principalmente para depurar; al mismo tiempo, el objetivo de este último es eliminar algunas ambigüedades. (como la precisión de los números de punto flotante), mientras que el primero Principalmente por legibilidad.

usar

1

2

3

4

5

6

7

8

9

In [12]: s = 'abc'

In [13]: print(str(s))

abc

In [14]: print(2.0/11)

0.18181818181818182

In [15]: repr(s)

Out[15]: "'abc'"

In [16]: repr(2.0/11)

Out[16]: '0.18181818181818182'

Si observas detenidamente, en realidad no hay diferencia en la precisión; pero cuando usas Python2, encontrarás la diferencia:

1

2

3

4

>>> eval('2.0/11')

0.18181818181818182

>>> print(2.0/11)

0.181818181818

Entonces otro ejemplo:

1

2

3

4

5

6

7

8

9

10

In [17]: import datetime

In [18]: n = datetime.datetime.now()

In [19]: print(str(n)

  ...: )

2020-01-16 09:22:13.361995

In [20]: repr(n)

Out[20]: 'datetime.datetime(2020, 1, 16, 9, 22, 13, 361995)'

Se puede ver que el primero es más legible y el segundo imprime el tipo y el valor, lo que es más adecuado para la depuración;

lograr

Ambos se implementan a través de funciones integradas; mire la documentación oficial que dice repr()

Devuelve una cadena que contiene una representación imprimible de un objeto.

Una clase puede controlar lo que devuelve esta función para sus instancias definiendo un método __repr__().

Esto significa que puedes personalizar esta función e implementar tu propio repr() (lo mismo para str), de la siguiente manera:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

In [35]: class TestClass:

  ...:   def __init__(self, name, age):

  ...:     self.name = name

  ...:     self.age = age

  ...:   def __repr__(self):

  ...:     return 'repr: ' + self.name + ' ,' + self.age

  ...:   def __str__(self):

  ...:     return self.name + ' ,' + self.age

  ...:

   

In [38]: tt = TestClass('tony', '23')

In [39]: repr(tt)

Out[39]: 'repr: tony ,23'

In [40]: str(tt)

Out[40]: 'tony ,23'

Lo anterior es el contenido completo de este artículo, espero que sea útil para el estudio de todos.

Fuente: Lectura Weidian    https://www.weidianyuedu.com

Supongo que te gusta

Origin blog.csdn.net/weixin_45707610/article/details/131782485
Recomendado
Clasificación