«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как определить, представляет ли переменная Python функцию?

Как определить, представляет ли переменная Python функцию?

Опубликовано 12 ноября 2024 г.
Просматривать:596

How can I Determine if a Python Variable Represents a Function?

Как определить, представляет ли переменная функцию в 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

Следовательно, проверка вызываемости объекта должна включать явную проверку его возможности вызова, а не его соответствия определенному определению класса.

Заявление о выпуске Эта статья перепечатана по адресу: 1729252937. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3