Передача функций в Python: методы и примеры

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

Пример:

def greet():
    print("Hello!")
def call_function(func):
    func()
call_function(greet)
  1. Значения, возвращаемые функцией. Функции также могут возвращать другие функции. Это позволяет создавать функции высшего порядка или фабрики функций, которые генерируют специализированные функции на основе определенных условий или параметров.

Пример:

def multiply_by(n):
    def multiplier(x):
        return x * n
    return multiplier
multiply_by_two = multiply_by(2)
result = multiply_by_two(5)
print(result)  # Output: 10
  1. Присвоение функций переменным. В Python функции являются объектами первого класса, поэтому вы можете присваивать их переменным. Это позволяет вам относиться к функциям так же, как к любому другому типу данных, и передавать их по мере необходимости.

Пример:

def add(a, b):
    return a + b
my_function = add
result = my_function(2, 3)
print(result)  # Output: 5
  1. Хранение функций в структурах данных. Функции могут храниться в структурах данных, таких как списки, словари или наборы. Это может быть полезно для создания гибких и динамических структур кода.

Пример:

def greet():
    print("Hello!")
def say_goodbye():
    print("Goodbye!")
function_list = [greet, say_goodbye]
for func in function_list:
    func()
  1. Декораторы. Декораторы позволяют изменять поведение функций, обертывая их другими функциями. Этот метод обычно используется для добавления дополнительных функций к функциям без изменения их исходного кода.

Пример:

def uppercase_decorator(func):
    def wrapper():
        result = func()
        return result.upper()
    return wrapper
@uppercase_decorator
def greet():
    return "Hello!"
greet()