Условие:
Создайте декоратор isevensum(), который проверяет, что сумма, возвращаемая из декорируемой функции, является четной. Если сумма оказалось четной, то возвращается True, в противном случае возвращается False.
В программе уже существует функция getsum(), которая принимает на вход любое количество чисел и возвращает их сумму. К данной функции и будет применяться декоратор isevensum().
Примечание: не забывайте про *args и **kwargs при работе с декораторами
Решение:
Ниже приведён пошаговый разбор и итоговый код решения задачи: 1. Определим функцию-декоратор isevensum. Декоратор должен принимать функцию (функцию getsum) в качестве аргумента. 2. Внутри декоратора создадим вложенную функцию wrapper, которая принимает произвольное количество позиционных и именованных аргументов (*args и **kwargs). Это нужно для того, чтобы декоратор корректно работал...
print(getum(1, 2, 3)) # 1+2+3 = 6 - True, т.к. 6 - чётное число print(getum(1, 2, 4)) # 1+2+4 = 7 - False, т.к. 7 - нечётное число ------------------------------------------------- Пошаговое объяснение: 1. Функция issum принимает функцию func (в нашем случае, getum). 2. Внутри issum создаётся функция wrapper, которая принимает любые аргументы. 3. В wrapper вызывается func(*args, **kwargs) для вычисления суммы чисел. 4. После получения результата происходит проверка: если результат делится на 2 без остатка (result % 2 == 0), то возвращается True, иначе – False. 5. Декоратор возвращает функцию wrapper, которая и заменяет исходную функцию getum. 6. При вызове getum с аргументами декоратор выполнит описанную логику и выведет результат проверки на чётность суммы. Таким образом, декоратор issum() корректно проверяет чётность суммы, возвращаемой из функции getum().