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.