Học bằng cách đọc theo thứ tự

pprint — Hiển thị dict và list lồng nhau dễ đọc

print nén dict / list lồng nhau vào 1 dòng; dùng pprint.pp để xuống dòng và thụt lề, dùng pformat để lấy chuỗi đã định dạng đưa vào log, qua dữ liệu đơn hàng và cấu hình.

Khi bạn dùng print để debug, dict và list lồng nhau bị nhồi lên một dòng khó đọc suốt ngày. Module pprint (pretty-print) là công cụ thư viện chuẩn hiển thị cấu trúc lồng nhau với thụt lề và xuống dòng, cực kỳ hữu ích cho debug và log output.

pp và pformat — Một cái in, một cái trả về chuỗi

pprint có hai nhân vật chính. pprint.pp(value) là hàm định dạng và in trực tiếp ra stdout, trả về None. pprint.pformat(value) ngược lại, trả về chuỗi đã định dạng mà không in gì lên màn hình.

pp vs pformat
giá trị lồng nhaudict / listpprint.pp(value)in ra stdouttrả về Nonegiá trị lồng nhaudict / listpprint.pformat(value)trả về chuỗiđã định dạng
pp định dạng và in trực tiếp (trả về None). pformat chỉ trả về chuỗi đã định dạng mà không in. Dùng pformat khi bạn muốn xử lý chuỗi trước khi in, hoặc nhúng nó vào dòng log hay thông báo lỗi.
HàmMục đíchGiá trị trả về
pprint.pp(value)định dạng và in ra stdoutNone (in trực tiếp)
pprint.pformat(value)trả về chuỗi đã định dạngchuỗi đã định dạng
indent=Nđộ rộng thụt lề (mặc định 1)
width=Nđộ rộng dòng tối đa (mặc định 80)
sort_dicts=Falsegiữ thứ tự khóa của dict (Python 3.8+)

Hiển thị cấu trúc với pprint.pp

pprint.pp(value)print(value) trông giống nhau với giá trị đơn giản, nhưng output khác hẳn khi bạn có dict hoặc list lồng nhauprint nhồi mọi thứ lên một dòng, trong khi pp chèn xuống dòng và thụt lề tương ứng với độ sâu của cấu trúc.

Một dict đơn hàng lồng nhau order đã được chuẩn bị sẵn. Hãy in nó bằng cả printpprint.pp rồi so sánh hai kết quả bằng mắt.

① Hãy in --- print --- trước, rồi print(order).

② Hãy in --- pprint.pp --- tiếp theo, rồi pprint.pp(order).

(Nếu chạy đúng, phần giải thích sẽ hiện ra.)

Python Editor

Chạy code để xem đầu ra

Lấy chuỗi đã định dạng với pprint.pformat

pprint.pformat(value) trả về chuỗi đã định dạng mà không in gì. Hãy dùng pformat khi bạn muốn chuyển hướng output (đưa vào logger, ghép thêm thông tin trước/sau rồi in, hoặc nhúng vào thông báo lỗi). Các tùy chọn width=Nindent=N hoạt động giống như với pp.

Một dict cấu hình config đã được chuẩn bị sẵn. Hãy định dạng nó bằng pformat và in với nhãn kiểu log. Để pprint lo phần định dạng; bạn tập trung xử lý kết quả như một chuỗi.

① Hãy định dạng config bằng pprint.pformat với width=40, lưu chuỗi định dạng vào biến tên formatted.

② Hãy in dòng tiêu đề [CONFIG] Cấu hình lúc khởi động bằng print, rồi print(formatted).

Python Editor

Chạy code để xem đầu ra
QUIZ

Kiểm tra kiến thức

Hãy trả lời từng câu hỏi một.

Câu 1Hàm nào hiển thị một dict lồng nhau giữ nguyên cấu trúc với xuống dòng và thụt lề?

Câu 2Bạn dùng cái nào để lấy chuỗi từ pprint và đưa vào output log?

Câu 3Làm sao để đổi độ rộng hiển thị của pprint.pp thành 40 ký tự?