Функции первого класса и функции высшего порядка
less_22__lambda__prog_paradigm__map_filter_reduce/theory_01__first-class_and_higher-order_functions.md
Объясняет, почему функция в Python — полноценный объект: её можно присвоить переменной, передать аргументом, вернуть из другой функции и положить в список или словарь. Вторая половина файла разделяет два похожих термина: функция первого класса — это свойство языка, функция высшего порядка — конкретная функция, которая принимает или возвращает другую функцию.
- add(a, b) присваивается переменной f и вызывается как f(2, 3)
- caller(func, x, y) — функция, принимающая функцию аргументом
- funcs = [add, multy] — хранение функций в списке
- apply(square, 5) — пример «принимает функцию»
- make_multiplier(n) — пример «возвращает функцию»
Показать начало файла (79 строк всего)
# Функции первого класса и высшего порядка Python
Это базовое понятие функционального программирования.
### Функции первого класса (first-class functions)
Это функция, которая в языке программирования является ПОЛНОЦЕННЫМ объектом.
Иными словами, её можно:
1. **Присваивать переменной**
2. **Передавать как аргумент другой функции**
3. **Возвращать из другой функции**
4. **Хранить в структурах данных** (списки, словари и т. д.)
```python
def add(a, b):
return a + b
f = add # присвоение функции переменной
print(f(2, 3)) # 5
def caller(func, x, y):
return func(x, y)
print(caller(add, 4, 5)) # 9
def multy(x, y):
return x * y
funcs = [add, multy] # хранение функций в списке
print(funcs[1](3, 4)) # 12
```
---
### Функции высшего порядка (higher-order functions)
Это функция, которая:
1. **Принимает другую функцию как аргумент** и/или
2. **Возвращает функцию как результат**
#### Пример 1 — функция принимает функцию как аргумент:
```python
def square(x):
return x * x
def apply(func, x):
return func(x)
print(apply(square, 5)) # 25
…