>>> x = 'foo'
>>> x
'foo'
Jadi namanya x
terlampir pada 'foo'
string. Ketika Anda menelepon misalnya repr(x)
, juru bahasa menempatkan 'foo'
alih-alih x
dan kemudian memanggil repr('foo')
.
>>> repr(x)
"'foo'"
>>> x.__repr__()
"'foo'"
repr
benar-benar memanggil metode ajaib __repr__
dari x
, yang memberikan string yang berisi representasi dari nilai 'foo'
ditugaskan untuk x
. Jadi itu kembali 'foo'
ke dalam string yang ""
menghasilkan "'foo'"
. Idenya repr
adalah untuk memberikan string yang berisi serangkaian simbol yang dapat kita ketik dalam juru bahasa dan mendapatkan nilai yang sama yang dikirim sebagai argumen repr
.
>>> eval("'foo'")
'foo'
Ketika kita menelepon eval("'foo'")
, itu sama seperti kita mengetik 'foo'
penerjemah. Itu karena kami langsung mengetik konten string luar ""
di penerjemah.
>>> 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
Jika kita memanggil eval('foo')
, itu sama seperti kita mengetik foo
penerjemah. Tetapi tidak ada foo
variabel yang tersedia dan pengecualian muncul.
>>> str(x)
'foo'
>>> x.__str__()
'foo'
>>>
str
hanya representasi string dari objek (ingat, x
variabel merujuk ke 'foo'
), jadi fungsi ini mengembalikan string.
>>> str(5)
'5'
Representasi string dari integer 5
adalah '5'
.
>>> str('foo')
'foo'
Dan representasi string dari string 'foo'
adalah string yang sama 'foo'
.