все Python 3typesпонятие
types.BuiltinFunctionType
типы функций
Тип встроенных функций и методов, написанных на C: len, print, [].append. Это не FunctionType, хотя вызываются они так же.
Синтаксис
isinstance(obj, types.BuiltinFunctionType)
Частая ошибка — проверять «функция ли это» через isinstance(x, types.FunctionType): для len, print и sorted ответ False, потому что у них нет Python-кода и атрибута __code__. BuiltinFunctionType покрывает и функции модулей на C (math.sqrt), и методы, уже связанные с объектом ([].append); types.BuiltinMethodType — второе имя того же класса. Чтобы принять любую функцию, берите callable() или inspect.isroutine(), а не перечисление типов.
Примеры
import math
import types
for obj in (len, math.sqrt, [].append):
print(isinstance(obj, types.BuiltinFunctionType),
isinstance(obj, types.FunctionType))
# → True False / True False / True False
print(types.BuiltinMethodType is types.BuiltinFunctionType) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности