>>> x = 'foo'
>>> x
'foo'
Le nom x
est donc attaché à une 'foo'
chaîne. Lorsque vous appelez par exemple, repr(x)
l'interpréteur met 'foo'
au lieu de x
puis appelle repr('foo')
.
>>> repr(x)
"'foo'"
>>> x.__repr__()
"'foo'"
repr
appelle en fait une méthode magique __repr__
de x
, qui donne la chaîne contenant la représentation de la valeur 'foo'
assignée à x
. Donc, il retourne 'foo'
à l'intérieur de la chaîne ""
résultant en "'foo'"
. L'idée de repr
est de donner une chaîne qui contient une série de symboles que nous pouvons taper dans l'interpréteur et obtenir la même valeur qui a été envoyée en argument repr
.
>>> eval("'foo'")
'foo'
Lorsque nous appelons eval("'foo'")
, c'est la même chose que nous tapons 'foo'
dans l'interpréteur. C'est comme nous tapons directement le contenu de la chaîne externe ""
dans l'interpréteur.
>>> 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 nous appelons eval('foo')
, c'est la même chose que nous tapons foo
dans l'interpréteur. Mais il n'y a pas de foo
variable disponible et une exception est levée.
>>> str(x)
'foo'
>>> x.__str__()
'foo'
>>>
str
est juste la représentation sous forme de chaîne de l'objet (rappelez-vous, la x
variable fait référence à 'foo'
), donc cette fonction renvoie une chaîne.
>>> str(5)
'5'
La représentation sous forme de chaîne d'un entier 5
est '5'
.
>>> str('foo')
'foo'
Et la représentation sous forme de chaîne de chaîne 'foo'
est la même chaîne 'foo'
.