callable()
Функция callable() возвращает True, если объект можно вызвать
(как функцию: obj(...)). Это функции, методы, классы, лямбды и
любые объекты с методом __call__(). Возвращает False для
чисел, строк, списков и других «данных».
Сигнатура
callable(object)
Возвращает: bool.
Примечание
True означает, что вызов может сработать. Реальный вызов всё
равно может выбросить исключение из-за неверных аргументов.
Примеры
Базовые случаи:
def greet():
return "hi"
print(callable(greet))
print(callable(len))
print(callable(42))
print(callable("hello"))
True
True
False
False
Классы и экземпляры:
class Robot:
def __init__(self, name):
self.name = name
print(callable(Robot))
r = Robot("Phobo")
print(callable(r))
True
False
Экземпляр становится вызываемым через __call__:
class Multiplier:
def __init__(self, k):
self.k = k
def __call__(self, x):
return self.k * x
double = Multiplier(2)
print(callable(double))
print(double(15))
True
30
Фильтрация вызываемых элементов:
items = [print, "text", 100, len, lambda x: x + 1]
funcs = [x for x in items if callable(x)]
print(len(funcs))
3
Безопасный вызов из словаря:
handlers = {"start": lambda: "запуск", "stop": "не функция"}
for name, h in handlers.items():
if callable(h):
print(name, "->", h())
else:
print(name, "не вызываем")
start -> запуск
stop не вызываем
См. также
Примечание
Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.