Декоратор функции

помогите разобраться с декоратором. У меня есть функция. Надо создать декоратор который позволит функции вернуть лишь один ответ если задано одно число (rope_product(8) -> 18) и много ответов списком если введённых значений будет несколько (rope_product(*[7,11,23,45,32]) -> [12, 54, 4374, 14348907, 118098])!

def rope_product(x):
    num_two = 0
    num_three = 0
    if x == 4:
        num_two = x // 2
    else:
        num_three = x // 3
        num_two = (x % 3) // 2
    max_product = 2 ** num_two * 3 ** num_three
    return max_product

Ответы (1 шт):

Автор решения: entithat
def rope_decorator(func):
    def wrapper_rope_decorator(*args):
        return func(*args) if len(args) == 1 else [func(arg) for arg in args]
    return wrapper_rope_decorator


@rope_decorator
def rope_product(x):
    num_two = 0
    num_three = 0
    if x == 4:
        num_two = x // 2
    else:
        num_three = x // 3
        num_two = (x % 3) // 2
    max_product = 2 ** num_two * 3 ** num_three
    return max_product


rope_product(30, 40) # [59049, 1594323]
rope_product(30) # 59049

P.S. Сам не очень разобрался в этом. Поправьте меня, если что.

→ Ссылка