В этом уроке вы узнаете о вызываемых объектах Python и о том, как использовать функцию callable() для проверки возможности вызова объекта.
Введение в вызываемые объекты 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
