Можно ли передать функцию как аргумент другой функции?

Да, в Python функции являются объектами первого класса. Это означает, что их можно передавать как аргументы другим функциям, возвращать из функций и присваивать переменным.

Да, безусловно, в Python функции являются объектами первого класса. Это означает, что с ними можно обращаться как и с любыми другими переменными. В частности, это позволяет:

  • Присваивать функцию переменной.
  • Возвращать функцию из другой функции.
  • Передавать функцию как аргумент другой функции.

Передача функции в качестве аргумента позволяет реализовать такие полезные вещи, как:

  • Callback-функции: Функция вызывается другой функцией после завершения определенной задачи.
  • Функции высшего порядка: Функции, которые принимают другие функции в качестве аргументов или возвращают функции в качестве результата. Примеры: map(), filter(), sorted().
  • Шаблоны проектирования: Такие как Strategy, где выбор алгоритма определяется передаваемой функцией.

Пример:


def apply_operation(x, y, operation):
    return operation(x, y)

def add(x, y):
    return x + y

def multiply(x, y):
    return x * y

result1 = apply_operation(5, 3, add) # result1 будет равно 8
result2 = apply_operation(5, 3, multiply) # result2 будет равно 15

print(f"Result of addition: {result1}")
print(f"Result of multiplication: {result2}")
  

В этом примере функции add и multiply передаются как аргумент в функцию apply_operation. Функция apply_operation затем вызывает переданную функцию, выполняя соответствующую операцию.

0