Python Glossary English

все 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Сообщить о неточности