>>> x = 'foo'
>>> x
'foo'
Así que el nombre x
se adjunta a 'foo'
cadena. Cuando llama por ejemplo repr(x)
el intérprete pone 'foo'
en lugar de x
y luego llama al repr('foo')
.
>>> repr(x)
"'foo'"
>>> x.__repr__()
"'foo'"
repr
llama en realidad un método mágico __repr__
de x
, que da la cadena que contiene la representación del valor asignado a 'foo'
x
. Entonces devuelve 'foo'
dentro de la cadena ""
dando como resultado "'foo'"
. La idea de repr
es dar una cadena que contiene una serie de símbolos que podemos escribir en el intérprete y obtener el mismo valor que se envió como argumento al repr
.
>>> eval("'foo'")
'foo'
Cuando llamamos eval("'foo'")
, que es lo mismo que escribimos 'foo'
en el intérprete. Es como escribimos directamente los contenidos de la cadena externa ""
en el intérprete.
>>> eval('foo')
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
eval('foo')
File "<string>", line 1, in <module>
NameError: name 'foo' is not defined
Si llamamos eval('foo')
, que es lo mismo que escribimos foo
en el intérprete. Pero no hay una variable foo
disponible y se genera una excepción.
>>> str(x)
'foo'
>>> x.__str__()
'foo'
>>>
str
es sólo la representación de cadena del objeto (recuerda, x
variable se refiere a 'foo'
), por lo que esta función devuelve cadena.
>>> str(5)
'5'
representación de cadena de número entero 5
es '5'
. representación
>>> str('foo')
'foo'
y collar de cadena 'foo'
es la misma cadena 'foo'
.
proporciona un muy buen ejemplo de comportamiento real/esperado para 1, pero no para 3. ¿cuál es la forma en que le gustaría verlo? – SingleNegationElimination
Por favor, elabore sobre la pregunta 3d. Es una buena idea dar un ejemplo. Ahora no está claro lo que quieres lograr. – ovgolovin
@TokenMacGuy Publiqué una nueva pregunta acerca de eso. No sé por qué, pero no pude editar esta publicación para ingresar el código real. Gracias por ayudarme. – 0101amt