>>> x = 'foo'
>>> x
'foo'
Der Name x
wird also an die 'foo'
Zeichenfolge angehängt . Wenn Sie zum Beispiel anrufen, repr(x)
setzt der Interpreter 'foo'
statt x
und ruft dann auf repr('foo')
.
>>> repr(x)
"'foo'"
>>> x.__repr__()
"'foo'"
repr
ruft tatsächlich eine magische Methode __repr__
von auf x
, die die Zeichenfolge angibt, die die Darstellung des 'foo'
zugewiesenen Werts enthält x
. Es kehrt also 'foo'
innerhalb der Zeichenfolge zurück, ""
was zu führt "'foo'"
. Die Idee von repr
ist, eine Zeichenfolge anzugeben, die eine Reihe von Symbolen enthält, die wir in den Interpreter eingeben können, und denselben Wert zu erhalten, an den als Argument gesendet wurde repr
.
>>> eval("'foo'")
'foo'
Wenn wir anrufen eval("'foo'")
, ist es dasselbe, wie wir 'foo'
den Interpreter eingeben. Es ist so, als würden wir den Inhalt der äußeren Zeichenfolge direkt ""
in den Interpreter eingeben.
>>> 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
Wenn wir anrufen eval('foo')
, ist es dasselbe, wie wir foo
den Interpreter eingeben. Es ist jedoch keine foo
Variable verfügbar und eine Ausnahme wird ausgelöst.
>>> str(x)
'foo'
>>> x.__str__()
'foo'
>>>
str
ist nur die Zeichenfolgendarstellung des Objekts (denken Sie daran, x
Variable bezieht sich auf 'foo'
), daher gibt diese Funktion eine Zeichenfolge zurück.
>>> str(5)
'5'
Zeichenfolgendarstellung der Ganzzahl 5
ist '5'
.
>>> str('foo')
'foo'
Die Zeichenfolgendarstellung der Zeichenfolge 'foo'
ist dieselbe Zeichenfolge 'foo'
.