Загружаем изображение…
Знаете, что Python позволяет перехватывать выполнение кода прямо в рантайме?
В CPython есть API
sys.settrace(), который даёт доступ к событиям выполнения Python-кода — на уровне функций и строк:sys.settrace(tracer)Функция-трейсер получает текущий frame, имя функции, номер строки и тип события:
frame.f_code.co_name
frame.f_lineno
event # 'call', 'line', 'return', 'exception'На этом механизме работают отладчики, профайлеры, coverage-инструменты и системы анализа кода:
def tracer(frame, event, arg):Можно логировать вызовы, отслеживать поведение кода или строить свой дебаггер, без изменения исходников.
Механизм даёт заметный overhead, поэтому не подходит для бездумного использования.
sys.settrace — это низкоуровневый хук интерпретатора для анализа и инструментирования выполнения Python-кода.Python Ready | #совет