>>> x = 'foo'
>>> x
'foo'
Więc nazwa xjest dołączona do 'foo'sznurka. Na przykład, repr(x)gdy dzwonisz, tłumacz stawia 'foo'zamiast, xa następnie dzwoni repr('foo').
>>> repr(x)
"'foo'"
>>> x.__repr__()
"'foo'"
reprw rzeczywistości wywołuje magiczną metodę __repr__of x, która daje ciąg zawierający reprezentację 'foo'przypisanej wartości x. Więc zwraca 'foo'wewnątrz ciągu, w ""wyniku czego "'foo'". Chodzi o reprto, aby podać łańcuch zawierający serię symboli, które możemy wpisać do interpretera i uzyskać tę samą wartość, która została przesłana jako argument repr.
>>> eval("'foo'")
'foo'
Kiedy dzwonimy eval("'foo'"), jest to to samo, co wpisujemy 'foo'w tłumacza. Dzieje się tak, ponieważ bezpośrednio wpisujemy zawartość zewnętrznego ciągu ""w interpreteru.
>>> 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
Jeśli zadzwonimy eval('foo'), to tak samo, jak wpisujemy footłumacza. Ale nie ma foodostępnej zmiennej i zgłaszany jest wyjątek.
>>> str(x)
'foo'
>>> x.__str__()
'foo'
>>>
strjest po prostu ciągową reprezentacją obiektu (pamiętaj, xzmienna się odwołuje 'foo'), więc ta funkcja zwraca łańcuch.
>>> str(5)
'5'
Reprezentacja liczby całkowitej w postaci łańcucha 5to '5'.
>>> str('foo')
'foo'
A reprezentacja łańcucha 'foo'to ten sam ciąg 'foo'.