Получение промежуточных результатов вызовов функций при отладке Python в PyCharm

#python #debugging #pycharm #chain

#python #отладка #pycharm #цепочка

Вопрос:

В точках останова -> PyCharm debugger показывает текущий список состояний переменных, а также может отображать результаты вычисления / вызова предыдущих строк.

Но что, если я хочу получить промежуточные результаты по вызовам цепочки функций в одной и той же строке кода?

Например:

 l = [3, 4, 5]
l = list(map(str, l)) #here I want to check result "of map(str, l)"

s = "_".join(l).upper()[::-1] #here I want see values for each interim func calls (join, upper)
 

Возможно ли это как-то в PyCharm?

Ответ №1:

Это можно сделать, используя точку останова в этой строке. Щелкните правой кнопкой мыши на точке останова и используйте кортеж в Evalute and log поле, имеющем в качестве значений вызовы цепочки инкрементных методов:

Следующий код показывает различия в промежуточных результатах:

 l = ['Hello', 'my', 'friends']

s = "_".join(l).upper()[::-1]
 

Использование кортежа в Evaluate and log :

 (l, "_".join(l), "_".join(l).upper(), "_".join(l).upper()[::-1])
 

Отладчик отображает результаты на стандартном выводе:

 (['Hello', 'my', 'friends'], 'Hello_my_friends', 'HELLO_MY_FRIENDS', 'SDNEIRF_YM_OLLEH')
 

Соответствующий снимок экрана:

введите описание изображения здесь