>>> x = 'foo'
>>> x
'foo'
Der Name xwird also an die 'foo'Zeichenfolge angehängt . Wenn Sie zum Beispiel anrufen, repr(x)setzt der Interpreter 'foo'statt xund ruft dann auf repr('foo').
>>> repr(x)
"'foo'"
>>> x.__repr__()
"'foo'"
reprruft 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 reprist, 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 fooden Interpreter eingeben. Es ist jedoch keine fooVariable verfügbar und eine Ausnahme wird ausgelöst.
>>> str(x)
'foo'
>>> x.__str__()
'foo'
>>>
strist nur die Zeichenfolgendarstellung des Objekts (denken Sie daran, xVariable bezieht sich auf 'foo'), daher gibt diese Funktion eine Zeichenfolge zurück.
>>> str(5)
'5'
Zeichenfolgendarstellung der Ganzzahl 5ist '5'.
>>> str('foo')
'foo'
Die Zeichenfolgendarstellung der Zeichenfolge 'foo'ist dieselbe Zeichenfolge 'foo'.