โมดูล reprlib ให้ repr() แบบจำกัดขนาด (Size-limited) เหมาะสำหรับ Debug ข้อมูลใหญ่ ไม่ให้ Output กวาดหน้าจอ
import reprlib
ฟังก์ชันหลัก
reprlib.repr(obj)- คืน String แบบ Truncated (เหมือน repr แต่มี Limit)reprlib.aRepr- Instance Default Repr Object
Class reprlib.Repr - ปรับแต่ง Limits ได้
| Attribute | Default | คำอธิบาย |
|---|---|---|
maxlevel | 6 | Recursion Depth Limit |
maxdict | 4 | Max Dict Items แสดง |
maxlist | 6 | Max List Items แสดง |
maxtuple | 6 | Max Tuple Items แสดง |
maxset | 6 | Max Set Items แสดง |
maxfrozenset | 6 | Max Frozenset Items แสดง |
maxdeque | 6 | Max Deque Items แสดง |
maxarray | 5 | Max Array Items แสดง |
maxlong | 40 | Max Digits สำหรับ Long Int |
maxstring | 30 | Max Chars สำหรับ String |
maxother | 256 | Max Size สำหรับ Type อื่นๆ |
โค้ดตัวอย่าง
import reprlib
import math
# List ใหญ่
fact_list = [math.factorial(x) for x in range(50)]
# Default reprlib
print("Default reprlib:")
print(reprlib.repr(fact_list))
# [1, 1, 2, 6, 24, 120, ...]
# Custom Repr
my_repr = reprlib.Repr()
my_repr.maxlist = 10
my_repr.maxlong = 20
my_repr.maxstring = 50
print("\nCustom reprlib:")
print(my_repr.repr(fact_list))
# Object ใหญ่
large_dict = {f'key_{i}': f'value_{i}' * 10 for i in range(100)}
print("\nLarge Dict (default):")
print(reprlib.repr(large_dict))
my_repr.maxdict = 3
print("\nLarge Dict (maxdict=3):")
print(my_repr.repr(large_dict))
ผลลัพธ์
Default reprlib:
[1, 1, 2, 6, 24, 120, ...]
Custom reprlib:
[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, ...]
Large Dict (default):
{'key_0': 'value_0value_0value_0value_0value_0value_0value_0value_0value_0value_0', 'key_1': 'value_1value_1value_1value_1value_1value_1value_1value_1value_1value_1', 'key_2': 'value_2value_2value_2value_2value_2value_2value_2value_2value_2value_2', 'key_3': 'value_3value_3value_3value_3value_3value_3value_3value_3value_3value_3', ...}
Large Dict (maxdict=3):
{'key_0': 'value_0value_0value_0value_0value_0value_0value_0value_0value_0value_0', 'key_1': 'value_1value_1value_1value_1value_1value_1value_1value_1value_1value_1', 'key_2': 'value_2value_2value_2value_2value_2value_2value_2value_2value_2value_2', ...}
Subclassing Repr สำหรับ Custom Types
class MyRepr(reprlib.Repr):
def repr_MyClass(self, obj, level):
return f''
my_repr = MyRepr()
print(my_repr.repr(MyClass(42)))
การประยุกต์ใช้
- Logging/Debugging ข้อมูลใหญ่ (Large Data Structures)
- Test Output Comparison
- REPL Customization
- Serialization Preview