Показать сообщение отдельно
Старый 23.09.2023, 16:27   #1
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию Декоратор, для получения n количества запуска функции

Добрый день. По сути задача - декоратор с параметром. Это сделано. Но вот не могу собразить как получить timestamps_list в get для того, чтобы выбрать n элементов из этого списка. И вообще по принтам выводится все для get, потом все для wrapper, а потом уже функция несколько раз (если в цикле). То есть как бы нет вложенности в этой структуре. Пробовал через nonlocal, но переменная не изменяется. Нужна пояснительная бригада, как такое можно сделать.
Код:
def get(n):

    def wrapper(func):
        def inner(*args, **kwargs):
            ts_before = time.time()
            result = func(*args, **kwargs)
            ts_after = time.time()
            inner.timestamps_list.append(ts_after - ts_before)
            return result

        inner.timestamps_list = []
        return inner

    return wrapper
Arkuz вне форума Ответить с цитированием