Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
03 Мар 2023
2 мин
1601

Что такое функции высшего порядка в Python

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

Примеры функций высшего порядка

Рассмотрим несколько примеров функций высшего порядка в Python.

Функция map

Функция map принимает функцию и итерируемый объект (например, список) и применяет данную функцию ко всем элементам итерируемого объекта. В результате получаем объект-итератор, который содержит результаты применения функции.

def square(x):
    return x * x

numbers = [1, 2, 3, 4, 5]
squares = map(square, numbers)

print(list(squares))  # [1, 4, 9, 16, 25]

Функция filter

Функция filter принимает функцию-предикат и итерируемый объект, проходит по каждому элементу итерируемого объекта и возвращает новый итератор, состоящий только из тех элементов, для которых функция-предикат вернула True.

def is_even(x):
    return x % 2 == 0

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(is_even, numbers)

print(list(even_numbers))  # [2, 4, 6]

Функция, возвращающая функцию

Функции высшего порядка могут также возвращать другие функции. Это полезно, когда вы хотите создать функцию с некоторыми предустановленными параметрами.

def make_multiplier(factor):
    def multiplier(x):
        return x * factor
    return multiplier

double = make_multiplier(2)
triple = make_multiplier(3)

print(double(4))  # 8
print(triple(4))  # 12

Замыкания и декораторы

Функции высшего порядка тесно связаны с понятием замыканий и декораторов в Python. Замыкание — это функция, которая «запоминает» окружение, в котором была определена, даже если оно уже не существует. Декораторы — это способ изменить поведение функции или класса, обернув его в другую функцию или класс.

def make_greeting_decorator(greeting):
    def decorator(func):
        def wrapper(name):
            return f"{greeting}, {func(name)}!"
        return wrapper
    return decorator

@make_greeting_decorator("Hello")
def greet(name):
    return name

print(greet("John"))  # Hello, John!

В этом примере, мы создали декоратор make_greeting_decorator, который добавляет приветствие к результату вызова функции greet.

Теперь вы знаете, что такое функции высшего порядка в Python, и как их использовать для создания более модульного и масштабируемого кода. 😊

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий