У меня есть модуль, который украшает некоторые ключевые функции пользовательскими декораторами.
Отладка этих функций с помощью pdb часто доставляет определенные неудобства, потому что каждый раз, когда я вхожу в декорированную функцию, мне сначала приходится выполнять код самого декоратора.
Конечно, я мог бы просто настроить отладчик так, чтобы он прерывал интересующую меня функцию, но как ключевые функции они вызываются много раз из многих мест, поэтому я обычно предпочитаю начинать отладку вне функции.
Я попытался проиллюстрировать это кодом, но не знаю, поможет ли это:
def i_dont_care_about_this(fn):
@functiontools.wraps(fn)
def wrapper(*args, **kwargs):
return fn(*args, **kwargs)
return wrapper
@i_dont_care_about_this
def i_only_care_about_this():
# no use to set pdb here
def i_am_here():
import pdb; pdb.set_trace()
i_only_care_about_this()
Итак, есть ли способ перейти в i_only_care_about_this
из i_am_here
, не проходя через i_dont_care_about_this
?
По сути, я хочу пропустить весь код декоратора при использовании шагов с по(с)в заданной декорированной функции.