Python Callables Основы и секреты

Основы и секреты Python Callables

ПРОГРАММИРОВАНИЕ НА PYTHON

Узнайте, насколько мощными могут быть вызываемые объекты Python.

В Python есть много вызываемых объектов на выбор. Фото Pavan Trikutam на Unsplash

В языках программирования вызываемые объекты обычно ассоциируются с функциями, и это неспроста. Функции, пожалуй, являются лучшим примером вызываемых объектов, но не единственным. В Python есть много других типов вызываемых объектов, которые могут быть невероятно полезными и мощными. Вы также можете создавать свои собственные вызываемые объекты. В этой статье речь пойдет обо всем этом.

Вызываемый объект – это объект, который можно вызывать с помощью пары круглых скобок, как, например, ниже, где мы используем встроенную функцию sum():

>>> sum([1, 1, 1])3

Вызов вызываемого объекта, в зависимости от его определения, может быть:

  • без аргументов, как, например, no_args_callable()
  • или серией позиционных и/или именованных аргументов, как, например, args_callable(arg1, arg2), args_callable(arg1, arg2=value2) или args_callable(arg1=value1, arg2=value2)

Выше я описал вызываемый объект как существительное. Однако, слово “вызываемый” также используется как прилагательное, означающее “быть вызываемым”. Таким образом, вызываемый объект – это то же самое, что и вызываемый объект.

Python имеет встроенную функцию callable(), которая проверяет, является ли объект вызываемым, или, другими словами, является ли он вызываемым. Рассмотрим следующие примеры реальных вызываемых объектов:

>>> callable(lambda x: x + 1)True>>> callable(print)True>>> def foo(): ...>>> callable(foo)True

Следующие объекты не являются вызываемыми:

>>> callable(None)False>>> callable(10)False>>> callable("hello")False

Положительные примеры выше были о функциях, с которыми большинство людей ассоциирует вызываемые объекты. Однако на самом деле каждый класс Python является вызываемым. Если вы знакомы с основами ООП в Python, вы знаете, что для создания экземпляра класса необходимо сделать следующее:¹

>>> class Empty: ...

Это выглядит именно как вызов, и он им является – вот почему классы Python являются вызываемыми объектами.

Этот код показывает, что класс Empty является вызываемым, но правда в том, что каждый отдельный класс Python является вызываемым. Однако, в Python…