Chcę, dla celów debugowania, wydrukować coś odnoszącego się do każdej linii wykonanej w metodzie pythona.Python Decorator do drukowania każdej linii wykonanej za pomocą funkcji
Na przykład, jeśli w wierszu było jakieś przypisanie, chcę wydrukować, jaka wartość została przypisana dla tej zmiennej, a jeśli było wywołanie funkcji, chcę wydrukować wartość zwróconą przez funkcję, itp.
tak więc, na przykład, jeśli miałbym użyć dekorator, stosowane na funkcji/metody, takie jak:
@some_decorator
def testing() :
a = 10
b = 20
c = a + b
e = test_function()
testowanie funkcji po nazwie, należy wydrukować następujące:
a = 10
b = 20
c = 30
e = some_value
Czy jest jakiś sposób, aby to osiągnąć? Bardziej fundamentalnie, chcę wiedzieć, czy mogę napisać kod, który może przejść przez jakiś inny kod po linii, sprawdzić, jaki rodzaj instrukcji jest, itp. A może lubimy, możemy uzyskać słownik do znajdowania wszystkich zmiennych w klasy, czy mogę uzyskać słownik taki jak struktura danych, aby uzyskać wszystkie instrukcje w funkcji, która jest tak dobra, jak metaprogram może uzyskać.
W związku z tym, szczególnie szukam rozwiązania przy użyciu dekoratorów, ponieważ jestem ciekawy, czy można mieć dekorator, który może przejść całą linię funkcji po linii i ozdobić ją wiersz po linii, , ale wszelkie rozwiązania są Witamy.
Z góry dziękuję.
on współpracować zrobimy to, ale nie znam jednego. Zasadniczo możesz wyodrębnić plik i numer linii z udekorowanej funkcji, ponownie przeczytać funkcję, skompilować ją do AST, wstawić węzły w AST, a następnie skompilować AST i użyć go jako funkcji. Ciekawy projekt. –
Może pomocny będzie moduł ['pdb'] (https://docs.python.org/2/library/pdb.html)? – augurar
@perreal, możesz wyjaśnić swoje podejście bardziej szczegółowo lub podać link, gdzie mogę znaleźć więcej informacji na temat elementów w twoim podejściu, a jeśli to możliwe, zastosować je w moim problemie. dzięki przy okazji dla twojej odpowiedzi – ironstein