0Pricing
Python Academy · Урок

Функции первого класса

Передавайте функции и возвращайте их из функций

«Функции первого класса» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Функции первого класса
  2. Замыкания и свободные переменные
  3. nonlocal и изменяемое состояние
  4. Частичные функции
← Назад к Python Academy