Функции первого класса
Передавайте функции и возвращайте их из функций
«Функции первого класса» — бесплатный урок Python Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.
Функции — это объекты
В Python функции являются объектами первого класса. Их можно присваивать переменным, хранить в структурах данных, передавать как аргументы и возвращать из других функций — так же, как числа или строки.
def greet():
return 'hi'
print(type(greet))
print(greet())Присваивание функций переменным
Имя функции — это всего лишь ссылка. Присвойте её другому имени и вызывайте функцию через это имя — при обращении к самой функции круглые скобки не нужны.
def shout(text):
return text.upper()
yell = shout
print(yell('hello'))Функции в структурах данных
Вы можете хранить функции в списках или словарях, а затем находить и вызывать их динамически.
def add(a, b):
return a + b
def sub(a, b):
return a - b
ops = {'+': add, '-': sub}
print(ops['+'](10, 4))
print(ops['-'](10, 4))Передача функций как аргументов
Функция, принимающая другую функцию в качестве параметра, называется функцией высшего порядка. Переданная функция является аргументом.
def apply(func, value):
return func(value)
print(apply(str.upper, 'cat'))
print(apply(len, 'cat'))Функция отображения использует функции первого класса
Встроенные функции, такие как map, используют передачу функций. Здесь функция применяется к каждому элементу.
def square(n):
return n * n
result = list(map(square, [1, 2, 3, 4]))
print(result)Функция фильтрации принимает предикат
filter оставляет элементы, для которых переданная функция возвращает True. Функция определяет, какие элементы останутся.
def is_even(n):
return n % 2 == 0
print(list(filter(is_even, range(10))))Возврат функции
Функция может возвращать другую функцию. После этого возвращённую функцию можно вызвать отдельно.
def get_greeter():
def greeter(name):
return 'Hello ' + name
return greeter
f = get_greeter()
print(f('Ada'))Функции как ключи сортировки
sorted принимает функцию key, которая сопоставляет каждому элементу значение, используемое для упорядочивания.
words = ['banana', 'fig', 'cherry']
by_length = sorted(words, key=len)
print(by_length)Лямбда-функции для быстрых операций
lambda — это небольшая анонимная функция. Она отлично подходит для одноразового использования в качестве аргумента.
nums = [5, 1, 4, 2]
print(sorted(nums, key=lambda x: -x))У функций есть атрибуты
Поскольку функции являются объектами, у них есть такие атрибуты, как __name__, а строка документации хранится в __doc__.
def hello():
'Says hello.'
return 'hi'
print(hello.__name__)
print(hello.__doc__)Создание таблицы диспетчеризации
Объединив эти идеи, Вы можете создать понятную таблицу диспетчеризации, которая выбирает функцию по имени — без длинных цепочек if/elif.
def start():
return 'starting'
def stop():
return 'stopping'
actions = {'start': start, 'stop': stop}
command = 'start'
print(actions[command]())Быстрая проверка
Что означает, что функции в Python являются «объектами первого класса»?
Повторение: функции первого класса
Вы узнали, что в Python:
- Функции — это объекты, которым можно присваивать имена, хранить их, передавать и возвращать.
- Функции высшего порядка принимают или возвращают другие функции (
map,filter, ключsorted). lambdaсоздаёт быстрые анонимные функции.- Это позволяет создавать понятные таблицы диспетчеризации вместо длинных условных конструкций.
ops = {'double': lambda x: x * 2}
print(ops['double'](21))Часто задаваемые вопросы
Урок «Функции первого класса» бесплатный?
Да — полный текст урока «Функции первого класса» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.
Чему я научусь в уроке «Функции первого класса»?
Передавайте функции и возвращайте их из функций Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Функции первого класса»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Функции первого класса
- Замыкания и свободные переменные
- nonlocal и изменяемое состояние
- Частичные функции