LINUX.ORG.RU

Нужен декоратор, который будет дампить аргументы функции и return

 


0

1

Где-то видел декоратор, который печатает то, что пришло в функцию и то, что она вернула. Никак не могу его найти) типа:

@debug_func
func1(...):
   ...

out

"in: args: a=15, b=14, kwargs={'z': 1} out: 12"
★★★★

Последнее исправление: bryak (всего исправлений: 1)

да там же полминуты его писать, буквально строчек 8. Попробуй, это ведь просто, за одно полезному научишься

gnunixon ★★★
()
Ответ на: комментарий от gnunixon
from functools import wraps

def debug_func(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        out = func(*args, **kwargs)
        args_fmt = ", ".join([
            f"{name}={val}" for name, val in zip(func.__code__.co_varnames, args)
        ])
        print(f"in: args: {args_fmt}, kwargs={kwargs} out: {out}")
        return result
    return wrapper

сделал форматирование как в ОП

eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.