ฟังก์ชันในตัว repr() และ str() เรียก object.__repr__(self) และ object.__str__(self) ตามลำดับ ฟังก์ชันแรกคำนวณการแทนค่าของอ็อบเจ็กต์อย่างเป็นทางการ ในขณะที่ฟังก์ชันที่สองคืนค่าการแสดงอ็อบเจกต์อย่างไม่เป็นทางการ
ผลลัพธ์ของฟังก์ชันทั้งสองจะเหมือนกันสำหรับวัตถุจำนวนเต็ม
>>> x = 1 >>> repr(x) '1' >>> str(x) '1'
อย่างไรก็ตาม ไม่ใช่กรณีของวัตถุสตริง
>>> x = "Hello" >>> repr(x) "'Hello'" >>> str(x) 'Hello'
ค่าส่งคืนของ repr() ของวัตถุสตริงสามารถประเมินได้โดยฟังก์ชัน eval() และผลลัพธ์ในวัตถุสตริงที่ถูกต้อง อย่างไรก็ตาม ผลลัพธ์ของ str() ไม่สามารถประเมินได้
>>> y1 = repr(x) >>> eval(y1) 'Hello' >>> y2 = str(x) >>> eval(y2) NameError: name 'Hello' is not defined
สรุป. repr() คืนค่าการแสดงค่าเริ่มต้นและชัดเจนของวัตถุ โดยที่ str() ให้การแสดงแบบไม่เป็นทางการที่อาจอ่านได้ แต่อาจไม่คลุมเครือเสมอไป