1. Главная
  2. Библиотека
  3. Программирование
  4. Создайте декоратор isevensum(), который проверяет, что...
Решение задачи на тему

Создайте декоратор isevensum(), который проверяет, что сумма, возвращаемая из декорируемой функции, является четной. Если сумма оказалось четной, то возвращается True, в противном случае возвращается False. В программе уже существует функция getsum(),

  • Программирование
  • #Языки программирования (C++, Java, Python и др.)
  • #Модульное и компонентное программирование
Создайте декоратор isevensum(), который проверяет, что сумма, возвращаемая из декорируемой функции, является четной. Если сумма оказалось четной, то возвращается True, в противном случае возвращается False. В программе уже существует функция getsum(),

Условие:

Создайте декоратор 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().

Не нашел нужную задачу?

Воспользуйся поиском

Выбери предмет