Задать вопрос
@oneLEAM

Почему декоратор не работает с функциями которые принимаю переменные?

Вот код который считает время работы функций:
from time import time

def operating_time(func):
    def wrapper():
        t1 = time()
        func()
        t2 = time()-t1
        print(f'{func.__name__} ran in\n{t2} seconds')
    return wrapper

Он работает с функциями которые не принимают переменные, а которые принимают - нет.
Моя попытка сделать чтобы он заработал с такими функциями:
from time import time

def operating_time(func, *args):
    def wrapper():
        t1 = time()
        func(*args)
        t2 = time()-t1
        print(f'{func.__name__} ran in\n{t2} seconds')
    return wrapper

Код ошибки:
TypeError: operating_time.<locals>.wrapper() takes 0 positional arguments but 1 was given

Ошибка одна на первый и второй коды
  • Вопрос задан
  • 146 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
*args в приведённом коде это аргументы самого декоратора. А аргументы функции надо описывать в wrapper.

Сама суть декоратора в том, что вместо исходной функции получается другая функция wrapper.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Hivemaster
@Hivemaster
Админ, который хочет программировать
Потому что программист ни учебник, ни документацию не читал.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы