Документация по Python. Теоретические материалы, и практические задачи

Функция callable в Python

Функция callable в Python — предназначен для проверки для проверки объектов на вызов. Если говорить простыми словами, то данная функция вернет нам значение True, если передаваемый объект является функцией, в противном случае мы получим значение False.

Возвращаемые значения функции callable()

Метод callable() возвращает следующие параметры:

  • True — если объект является вызываемым
  • False — если объект окажется невызываемым

Следует запомнить, что если даже callable() вернет нам True, то даже в таком случае вызов объекта может завершится неудачей. В случае если callable() вернет False, то вызов объекта, в любом случае завершится неудачей.


Пример 1. Как работает функция callable()?

                    
x = 5
print(callable(x))

def testFunction():
  print("Test")

y = testFunction
print(callable(y))

#Результат
False
True

Как видите мы передаем переменную x в нашу функцию, и нам возвращается результат False, так как данный объект точно не является вызываемым. В другом случае, мы видим что, после передачи объекта y, нам возвращается значение True, но не забываем о том, что и в таком случае вызов данного объекта может завершится неудачей.

Пример 2. Объект является вызываемым

                    
class Foo:
  def __call__(self):
    print('Print Something')

print(callable(Foo))
#Результат
True

На данном примере мы можем увидеть, что экземпляр класса Foo(), может быть вызван, на примере ниже попробуем вызвать данный объект, и убедимся, работает ли все так, как нам надо.

                    
class Foo:
  def __call__(self):
    print('Print Something')

InstanceOfFoo = Foo()

# Prints 'Print Something'
InstanceOfFoo()

Пример 3. Вызываемый объект, не вызывается

                    
class Foo:
  def printLine(self):
    print('Print Something')

print(callable(Foo))
#Результат
True

На примере выше, мы рассматриваем пример, где на первый взгляд кажется, что экземпляр класса Foo() является вызываем. Но на самом деле, тут мы увидим ошибку.

                    
class Foo:
  def printLine(self):
    print('Print Something')

print(callable(Foo))

InstanceOfFoo = Foo()
# Raises an Error
# 'Foo' object is not callable
InstanceOfFoo()

#True Traceback (most recent call last): File "", line 10, in  TypeError: 'Foo' object is not callable

 

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *