Python Dunder метод для печати всех переменных, содержащихся в функции?Для кастомного отладочного декоратора - PullRequest
0 голосов
/ 21 января 2019

Есть ли способ напечатать все переменные функции? Я хочу создать собственный отладочный декоратор и не могу найти то, что ищу. Я предполагаю, что есть какой-то более грубый метод для этого? Итак, для функции:

def debugger(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        print(func.__funcVariables__) #Some dunder method that Prints all variables contained in func
        return func
    return wrapper

@debugger
def my_func():
    x = 'foo'
    y = 'bar'

Я бы хотел, чтобы 'foo' и 'bar' печатались на консоли от декоратора. Как мне этого добиться?

1 Ответ

0 голосов
/ 21 января 2019

Звучит так, будто вы ищете function.__code__.co_varnames, который является кортежем имен аргументов функций и локальных переменных. Это задокументировано остальными инструментами самоанализа кода в документации для модуля inspect

def debugger(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        print(func.__code__.co_varnames) 
        return func
    return wrapper

@debugger
def my_func():
    x = 'foo'
    y = 'bar'
...