>>> x = 'foo'
>>> x
'foo'
ดังนั้นชื่อที่x
แนบมากับ'foo'
สตริง เมื่อคุณเรียกเช่นrepr(x)
ทำให้ล่าม'foo'
แทนแล้วโทรออกx
repr('foo')
>>> repr(x)
"'foo'"
>>> x.__repr__()
"'foo'"
repr
จริงเรียกวิธีมายากล__repr__
ของx
ซึ่งจะช่วยให้สตริงที่มีตัวแทนของค่าที่ได้รับมอบหมายให้'foo'
x
ดังนั้นก็จะส่งกลับ'foo'
ภายในสตริงที่เกิดขึ้นใน""
"'foo'"
ความคิดของคือการให้สตริงที่มีชุดของสัญลักษณ์ที่เราสามารถพิมพ์ในล่ามและได้รับค่าเดียวกันซึ่งถูกส่งเป็นอาร์กิวเมนต์ที่จะเป็นrepr
repr
>>> eval("'foo'")
'foo'
เมื่อเราเรียกeval("'foo'")
มันเหมือนกับที่เราพิมพ์'foo'
ในล่าม มันเป็นเพราะเราพิมพ์เนื้อหาของสายนอก""
ในล่ามโดยตรง
>>> 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
ถ้าเราเรียกeval('foo')
มันเหมือนกับที่เราพิมพ์foo
ล่าม แต่ไม่มีfoo
ตัวแปรและมีการยกข้อยกเว้น
>>> str(x)
'foo'
>>> x.__str__()
'foo'
>>>
str
เป็นเพียงการแสดงสตริงของวัตถุ (จำไว้ว่าx
ตัวแปรหมายถึง'foo'
) ดังนั้นฟังก์ชั่นนี้จะส่งกลับสตริง
>>> str(5)
'5'
ตัวแทนสตริงของจำนวนเต็มคือ5
'5'
>>> str('foo')
'foo'
และการเป็นตัวแทนสตริงของสตริงเป็นสายเดียวกัน'foo'
'foo'