Олег Марков
Как работает функция callable в Python
Введение
В Python многие объекты можно вызывать, то есть использовать с оператором (), как функцию. Чтобы проверить, поддерживает ли объект такое поведение, используется встроенная функция callable(). Она возвращает True, если объект можно вызвать, и False — если нет.
Если вы хотите глубоко понять, как устроена объектная модель Python и почему функции — это всего лишь специальные объекты, приходите на курс Основы Python. На курсе 209 уроков и 34 упражнения, AI-тренажёры для безлимитной практики, живое ревью задач наставником и еженедельные встречи с менторами.
Что такое callable-объект
Callable-объект — это любой объект, у которого определён специальный метод __call__.
Функция callable(obj) просто проверяет наличие этого метода.
print(callable(len)) # True — встроенная функция
print(callable("hello")) # False — строка не вызываемаяТо есть не только функции могут быть вызываемыми:
- методы (
obj.method()) - классы (
SomeClass()) - экземпляры с реализованным
__call__
Пример: вызываемый объект через __call__
class Adder:
def __init__(self, n):
self.n = n
def __call__(self, x):
return x + self.n
add5 = Adder(5)
print(callable(add5)) # True
print(add5(10)) # 15 — экземпляр ведёт себя как функция📌 Когда мы делаем add5(10), Python ищет метод __call__.
Callable-классы и фабрики объектов
Классы — тоже вызываемые объекты:
class User:
pass
print(callable(User)) # True — можно "вызывать", создавая объектА вот экземпляры чаще всего не вызываемы:
u = User()
print(callable(u)) # FalseПример валидации:
def apply(fn, x):
if not callable(fn):
raise TypeError("fn must be callable")
return fn(x)
print(apply(abs, -7)) # 7Связь с типами данных
Обычно callable-объекты — функции первого класса: они передаются как данные, возвращаются из других функций, сохраняются в коллекции:
funcs = [abs, round, lambda x: x * 2]
for f in funcs:
print(f(5)) # 5 → 5 → 10В Python это фундаментальная часть гибкости языка.
Заключение
Функция callable() позволяет понять, ведёт ли объект себя как функция. Вызываемыми могут быть функции, классы и даже экземпляры с __call__. Это важная часть динамической природы Python, позволяющая создавать элегантные API и гибкие архитектуры.
Чтобы уверенно использовать callable-объекты, декораторы, функции первого класса и другие мощные механизмы Python — присоединяйтесь к курсу Основы Python. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в мир Python прямо сегодня.
Постройте личный план изучения Python до уровня Middle — бесплатно!
Python — часть карты развития Backend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Все гайды по Python
Лучшие курсы по теме

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