все Python 3inspectфункция
inspect.isroutine()
проверка вида объекта
Проверяет, что объект — функция или метод любого вида: Python, встроенные, связанные и дескрипторы методов.
Синтаксис
inspect.isroutine(object) -> bool
Это объединение isfunction, ismethod, isbuiltin, ismethoddescriptor и ismethodwrapper — но не callable(): класс и объект с __call__ вызываемы, а рутинами не считаются. Поведение для functools.partial сменилось: до 3.14 isroutine(partial(...)) давал False, с 3.14 — True. Если код должен работать на нескольких версиях, partial проверяйте явно через isinstance.
Примеры
import inspect
class A:
def m(self): pass
def __call__(self): pass
print(inspect.isroutine(len), inspect.isroutine(A().m)) # → True True
print(inspect.isroutine(list.append), inspect.isroutine(A)) # → True False
print(inspect.isroutine(A()), callable(A())) # → False True
# Python 3.14+
import functools, inspect
print(inspect.isroutine(functools.partial(print))) # → True — до 3.14 было False
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности