@incandescent99
Учусь програмировать

Как аргумент который принимает декоратор перекинуть вместо аргумента декорируемой функции?

def dec_arg(arg):

    def decorator(func):
        def wrapper(*args, **kwargs):
            res = func(*args, **kwargs)
            return res
        return wrapper
    return decorator

@dec_arg(20)
def sqr(num, n):

    return (num**2 + n)


print(sqr(1, 45))


Мне интересно узнать, можно ли что, к примеру вместо нашей n, был аргумент который я передал моему декоратору?
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
Wispik
@Wispik
def dec_arg(arg):

    def decorator(func):
        def wrapper(*args, **kwargs):
            res = func(dec_n=arg ,*args, **kwargs)
            return res
        return wrapper
    return decorator

@dec_arg(20)
def sqr(num, n, **kwargs):

    return (num**2 + kwargs['dec_n'])


print(sqr(1, 45))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@twistfire92
Python backend developer
def dec_arg(arg):
    def decorator(func):
        def wrapper(*args, **kwargs):
            res = func(*args, arg, **kwargs)
            return res
        return wrapper
    return decorator

@dec_arg(20)
def sqr(num, n):

    return (num**2) + n


print(sqr(1))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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