Как определить, представляет ли переменная функцию в Python
В Python может быть полезно проверить, указывает ли переменная на функция. Первоначально можно было бы рассмотреть возможность использования isinstance(x, function), но Python вызывает NameError для неопределенного класса функции.
Вызываемые объекты и hasattr
Чтобы определить, переменная — это функция, Python предлагает функцию callable(). Для Python 2.x и Python 3.2 этот метод предоставляет возможность проверки вызываемых объектов. Альтернативно, для Python 3.x до 3.2 можно использовать hasattr(obj, '__call__'), чтобы проверить, обладает ли объект атрибутом __call__, характерным для вызываемых объектов.
Предостережения относительно типов.FunctionType и Inspect.isfunction
Хотя были предложены подходы с использованием типов.FunctionTypes или Inspect.isfunction, эти методы имеют ограничения. Они возвращают False для функций, отличных от Python. Встроенные функции, реализованные на C, не проходят эту проверку, хотя они и являются вызываемыми:
>>> isinstance(open, types.FunctionType)
False
>>> callable(open)
True
Следовательно, проверка вызываемости объекта должна включать явную проверку его возможности вызова, а не его соответствия определенному определению класса.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3