Задать вопрос
@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

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

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

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

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
31 янв. 2025, в 00:16
43000 руб./за проект
30 янв. 2025, в 21:33
5000 руб./за проект
30 янв. 2025, в 21:14
4000 руб./за проект