Разработчик Тиан Гао создал инструмент с открытым исходным кодом для мониторинга переменных при отладке 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.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…