По-перше, я буду другою номінацією структури протоколу python . Однак будьте обережні, як ви цим користуєтеся. Зокрема: нехай рамка ведення журналу розширює ваші змінні, не робіть цього самостійно. Наприклад, замість:
logging.debug("datastructure: %r" % complex_dict_structure)
переконайтеся, що ви робите:
logging.debug("datastructure: %r", complex_dict_structure)
тому що, хоча вони виглядають подібними, перша версія покладає вартість repr (), навіть якщо вона відключена . Друга версія уникає цього. Так само, якщо ви робите свою, я б запропонував щось подібне:
def debug_stdout(sfunc):
print(sfunc())
debug = debug_stdout
зателефонував через:
debug(lambda: "datastructure: %r" % complex_dict_structure)
що, знову ж, уникне накладних витрат, якщо відключити його, зробивши:
def debug_noop(*args, **kwargs):
pass
debug = debug_noop
Накладні витрати на обчислення цих рядків, ймовірно, не мають значення, якщо вони не є 1) дорогими для обчислення або 2) оператором налагодження є посеред, скажімо, n ^ 3 циклу чи чогось іншого. Не те, щоб я щось про це знав.