Олег Марков
Функции как объекты в Python
Введение
В Python функции являются полноценными объектами. Это значит, что их можно присваивать переменным, хранить в структурах данных, передавать другим функциям и использовать как значения. Такой подход позволяет создавать гибкий и динамичный код, строить декораторы и паттерны функционального программирования.
В этой статье мы разберём особенности функций как объектов, способы их использования и покажем практические примеры.
Если вы хотите глубже понять работу с функциями и функциональное программирование в Python — приходите на наш курс Основы Python. На курсе 209 уроков и 34 упражнения, AI-тренажеры для практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.
Функции как объекты
В Python функция создаётся через def и автоматически становится объектом класса function:
def greet(name):
return f"Hello, {name}!"
print(type(greet)) # <class 'function'>Поскольку функция — объект, её можно присвоить другой переменной:
say_hello = greet
print(say_hello("Alice")) # Hello, Alice!Хранение функций в структурах данных
Функции можно хранить в списках, словарях и других структурах:
def add(x, y):
return x + y
def subtract(x, y):
return x - y
operations = [add, subtract]
print(operations[0](10, 5)) # 15
print(operations[1](10, 5)) # 5Словари с функциями:
ops = {"sum": add, "diff": subtract}
print(ops["sum"](7, 3)) # 10Передача функций как аргументов
Функции могут быть переданы другим функциям для выполнения:
def execute(func, x, y):
return func(x, y)
result = execute(add, 4, 5)
print(result) # 9Такой подход используется в стандартных функциях map, filter, sorted и других.
Свойства функций как объектов
Функции обладают атрибутами:
def sample():
"""Это пример функции"""
pass
print(sample.__name__) # 'sample'
print(sample.__doc__) # 'Это пример функции'
print(callable(sample)) # True__name__— имя функции__doc__— строка документацииcallable()— проверка, можно ли вызвать объект
Частые ошибки
- Ошибка при попытке вызывать функцию через имя переменной без скобок.
- Забыть, что передача функции без скобок передаёт объект, а с скобками — результат выполнения.
- Смешивание функций и методов без понимания контекста
self.
Часто задаваемые вопросы
Можно ли изменить функцию после создания? Функцию как объект можно присвоить другой переменной, но изменить её код напрямую нельзя.
Можно ли хранить методы классов как объекты? Да, методы класса тоже являются объектами и могут быть переданы, но учтите
selfдля экземпляров.Как проверить, что объект — функция?
from types import FunctionType
print(isinstance(greet, FunctionType)) # TrueЗаключение
Функции как объекты в Python дают мощные возможности для динамичного кода: хранение в структурах, передача другим функциям и использование в функциональном программировании. Понимание их объектной природы является основой для декораторов, замыканий и сложных архитектур.
Для системного изучения функций в Python рекомендую пройти курс Основы Python. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в мир Python прямо сегодня.
Постройте личный план изучения Python до уровня Middle — бесплатно!
Python — часть карты развития Backend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Все гайды по Python
Лучшие курсы по теме

Основы Python
Антон Ларичев
Nest.js с нуля
Антон Ларичев