Đầu tiên, tôi sẽ đề cử thứ hai về khung ghi nhật ký của python . Tuy nhiên, hãy cẩn thận một chút về cách bạn sử dụng nó. Cụ thể: hãy để khung ghi nhật ký mở rộng các biến của bạn, đừng tự làm điều đó. Ví dụ, thay vì:
logging.debug("datastructure: %r" % complex_dict_structure)
hãy chắc chắn rằng bạn làm:
logging.debug("datastructure: %r", complex_dict_structure)
bởi vì trong khi chúng trông giống nhau, phiên bản đầu tiên phải chịu chi phí repr () ngay cả khi nó bị vô hiệu hóa . Phiên bản thứ hai tránh điều này. Tương tự như vậy, nếu bạn tự cuộn, tôi sẽ đề xuất một cái gì đó như:
def debug_stdout(sfunc):
print(sfunc())
debug = debug_stdout
được gọi qua:
debug(lambda: "datastructure: %r" % complex_dict_structure)
điều này một lần nữa sẽ tránh được chi phí nếu bạn vô hiệu hóa nó bằng cách:
def debug_noop(*args, **kwargs):
pass
debug = debug_noop
Chi phí tính toán các chuỗi đó có lẽ không thành vấn đề trừ khi chúng 1) tốn kém để tính toán hoặc 2) câu lệnh gỡ lỗi nằm ở giữa, chẳng hạn, một vòng lặp n ^ 3 hoặc một cái gì đó. Không phải là tôi sẽ biết bất cứ điều gì về điều đó.