Разработчик Тиан Гао создал инструмент с открытым исходным кодом для мониторинга переменных при отладке Python под названием Watchpoints.
Инструмент ведет себя точно так же, как программа gdb (для отладки кода на C и C++).
$ python3 -m pip install watchpoints
Для отслеживаемой любой переменной используется функция watch
.
from watchpoints import watch a = 0 watch(a) a = 1
При изменении переменной информация о ее значении выводится через стандартный поток вывода данных.
====== Watchpoints Triggered ====== Call Stack (most recent call last): <module> (my_script.py:5): > a = 1 a: 0 -> 1
В данных о переменной будет храниться информация о строке, в которой была изменена переменная, стеке вызовов, предыдущем и текущем значении переменной.
from watchpoints import watch a = [] watch(a) a = {} # Trigger a["a"] = 2 # Trigger
callback
запускается при переназначении переменной «a» и при изменении объекта, назначенного переменной.Инструмент также позволяет наблюдать за переменной/объектом в любом месте, и функция callback
запускается независимо от того, как функцию выполняет программа.
from watchpoints import watch def func(var): var["a"] = 1 a = {} watch(a) func(a)
watch
может отслеживать не только переменную, но и атрибуты, и элемент словаря и списка. Это может помочь сузить круг поиска конкретных объектов.from watchpoints import watch class MyObj: def __init__(self): self.a = 0 obj = MyObj() d = {"a": 0} watch(obj.a, d["a"]) # Yes you can do this obj.a = 1 # Trigger d["a"] = 1 # Trigger
callback
.watch(a, callback=my_callback) # Or set it globally watch.config(callback=my_callback)
watch.config(pdb=True)
Чтоб не импортировать функцию в каждый отдельный файл, можно сделать ее глобальной, используя функцию install
:
watch.install() # or watch.install("func_name") and use it as func_name()
Open source-инструмент watchpoints распространяется под лицензией Apache 2.0 и доступен на GitHub.
Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…
В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…
Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…
Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…
Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…
IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…