Функция callable() в Python — проверка возможности вызова объекта
В этом уроке вы узнаете о вызываемых объектах Python и о том, как использовать функцию callable() для проверки возможности вызова объекта.
- Введение в вызываемые объекты Python
- Примеры вызываемых функций Python
- 1) Встроенные функции
- 2) Пользовательские функции
- 3) Встроенные методы
- 4) Классы
- 5) Методы
- 6) Экземпляры класса
Введение в вызываемые объекты Python
Если вы можете вызвать объект с помощью оператора (), этот объект является вызываемым:
object()
Например, функции и методы являются вызываемыми. В Python многие другие объекты также являются вызываемыми.
Вызываемый объект всегда возвращает значение.
Чтобы проверить, является ли объект вызываемым, можно использовать встроенную функцию callable:
callable(object)
Вызываемая функция принимает object. Она возвращает True, если объект является вызываемым. В противном случае она возвращает False.
Примеры вызываемых функций Python
Ниже показаны различные типы вызываемых объектов в Python.
1) Встроенные функции
Все встроенные функции являются вызываемыми. Например, print, len, even callable.
print(callable(print)) print(callable(len)) print(callable(callable))
Выход:
True True True
2) Пользовательские функции
Все пользовательские функции, созданные с использованием def или лямбда-выражений, могут быть вызваны. Например:
def add(a, b): return a + b print(callable(add)) # True print(callable(lambda x: x*x)) # True
Выход:
True True
3) Встроенные методы
Встроенные методы, такие как a_str.upper, a_list.append, могут быть вызваны. Например:
str = 'Python Callable' print(callable(str.upper)) # True
Выход:
True
4) Классы
Все классы являются вызываемыми. Когда вы вызываете класс, вы получаете новый экземпляр класса. Например:
class Counter: def __init__(self, start=1): self.count = start def increase(self): self.count += 1 def value(self): return self.count
5) Методы
Методы — это функции, привязанные к объекту, поэтому их также можно вызывать. Например:
print(callable(Counter.increase)) # True
Выход:
True
6) Экземпляры класса
Если класс реализует метод __call__, все экземпляры класса могут быть вызваны:
class Counter: def __init__(self, start=1): self.count = start def increase(self): self.count += 1 def value(self): return self.count def __call__(self): self.increase() counter = Counter() counter() print(callable(counter)) # True
Выход:
True