Как отлаживать код и визуализировать выполнение - PullRequest
0 голосов
/ 01 мая 2020

Я беру класс с открытым исходным кодом. Мне дают doctests и CLI, чтобы проверить мой код и посмотреть, прошел ли он, однако, как я могу визуализировать мой код, чтобы увидеть, что происходит? Например, мне трудно понять, как работает for loop, и я хотел бы посмотреть, какой список назначается в каждой рекурсии.

Файл имеет много функций, поэтому запуск -m doctest не идеален и также не показывает исполнение. Когда я запускаю режим отладки в коде и устанавливаю точку останова на функцию, она никогда не входит в функцию. Я предполагаю, что это потому, что в файле, который я никогда не называю nut_finder(), но я не хочу начинать добавлять к исходному коду, так как это противоречит цели doctest. Я также могу запустить python в интерактивном режиме, но это также не покажет мне, как выполняется код.

Единственное решение, которое я нашел, - это использование инструмента , который визуализирует код, Тем не менее, это требует от меня, чтобы вручную скопировать и вставить материал. Это также станет проблемой для больших приложений и многофайловых приложений. Короче говоря, как я могу узнать, как правильно отлаживать мой код.

# lab05.py
def nut_finder(t):
"""Returns True if t contains a node with the value 'nut' and
False otherwise.

>>> scrat = tree('nut')
>>> nut_finder(scrat)
True
>>> sproul = tree('roots', [tree('branch1', [tree('leaf'), tree('nut')]), tree('branch2')])
>>> nut_finder(sproul)
True
>>> numbers = tree(1, [tree(2), tree(3, [tree(4), tree(5)]), tree(6, [tree(7)])])
>>> nut_finder(numbers)
False
>>> t = tree(1, [tree('nut',[tree('not nut')])])
>>> nut_finder(t)
True
"""
if label(t) == 'nut':
    return True
for b in branches(t):
    if nut_finder(b):
        return True
return False

1 Ответ

0 голосов
/ 01 мая 2020

Я думаю, python 3,7 и выше: введите breakpoint() именно там, где вы хотите, чтобы это остановить. Это ярлык для использования модуля pdb (https://docs.python.org/3/library/pdb.html).

...