Я хочу, для целей отладки, распечатать что-то, относящееся к каждой строке, выполняемой в методе python.
Например, если в строке было какое-то присвоение, я хочу напечатать, какое значение было присвоено этой переменной, а если был вызов функции, я хочу распечатать значение, возвращаемое функцией, и т. Д.
Так, например, если бы я использовал декоратор, примененный к функции / методу, например:
@some_decorator
def testing() :
a = 10
b = 20
c = a + b
e = test_function()
функция тестирования при вызове должна напечатать следующее:
a = 10
b = 20
c = 30
e = some_value
Есть ли способ добиться этого? Более фундаментально, я хочу знать, могу ли я написать код, который может проходить через какой-либо другой код построчно, проверять, какой это тип инструкции и т. Д. Или, может быть, мы можем получить словарь для определения всех переменных в класс, могу ли я получить словарь, такой как структура данных, для получения каждой инструкции в функции, что настолько хорошо, что может получить метапрограмма.
Следовательно, я особенно ищу решение с использованием декораторов, так как мне любопытно, можно ли иметь декоратор, который может пройти через всю функцию строка за строкой и украсить ее строка за строкой, но любые и все решения приветствуются.
Заранее спасибо.
pdb
? - person augurar   schedule 23.08.2015a=1;b=2
. Обратите внимание, что python компилируется в байт-код, и строка может создавать любое количество байт-кодов ... модульsys
позволяет отслеживать вызовы функций, но я считаю, что нет простого способа получить выполнение точно по строкам. - person Bakuriu   schedule 28.08.2015