Материалы, подготовленные в результате оказания услуги, помогают разобраться в теме и собрать нужную информацию, но не заменяют готовое решение.

Полиморфизм функций в Python

Статью подготовили специалисты образовательного сервиса Zaochnik.

Содержание:

Python является языком программирования с динамической типизацией, и полиморфизм в нем присутствует на каждом шагу.

Понятие полиморфизма

На самом деле, большинство операций в Python являются полиморфическими:

Пример 1

Вывод, доступ к элементам, оператор `*` и многие другие.

В этом языке именно объекты задают синтаксический смысл операций.

Пример 2

Оператор `*` — это лишь указание для обрабатываемых объектов. Значение операции символь зависит от типов данных входящих объектов.

Одной и той же функции можно применяться к широкой категории типов объектов. Если объекты соответствуют ожидаемому интерфейсу (или протоколу), функция сможет их обработать. Если объект, переданный функции, обладает нужными методами и операторами, он будет совместим с функционалом.

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

Замечание 1

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

Проверить тип объекта можно через встроенную функцию `type`, однако это может привести к утрате гибкости кода.

Конечно, такая модель полиморфизма требует тестирования программы на наличие ошибок, так как из-за отсутствия явных объявлений типов компилятор не в состоянии найти некоторые ошибки на ранних этапах. Тем не менее, за небольшое увеличение времени на отладку мы получаем значительно меньше написанного кода и больше гибкости.

Полиморфизм функций

Замечание 2

В Python отсутствует полиморфизм функций, как в C++. Каждая функция должна иметь уникальное имя.

Подходящим решением будет полиморфизм по типу объекта, для которого функция вызывается, что требует вынесения функции в объект.

  • Учитывая полиморфизм функций по типам аргументов в примере ниже с каждым из параметров произойдет своя операция: числа будут умножаться на два, а строка будет повторяться дважды:

python

     def f(x):

          return x * 2

     f(1) * f("2")

     f(3.) * f(f(4))

  • Когда мы вызываем `print(f(5))`, будет активирована последняя функция, и результат вычислений составит 15. При этом первые две функции, уничтоженные в пространстве имен, фактически перестают существовать.

python

     def f(x):

          return x

     def f(x):

          return 2 * x

     def f(x):

          return 3 * x

     print(f(5))

Навигация по статьям

Выполненные работы по программированию

  • Программирование

    Latex

    • Вид работы:

      Набор текста (компьютерный)

    • Выполнена:

      18 ноября 2017

    • Стоимость:

      400 руб.

    Заказать такую же работу
  • Программирование

    Lazarus

    • Вид работы:

      Решение задач

    • Выполнена:

      16 ноября 2017

    • Стоимость:

      2 800 руб.

    Заказать такую же работу
  • Программирование

    Электронный журнал посещаемости для студентов

    • Вид работы:

      Курсовая работа

    • Выполнена:

      10 ноября 2017

    • Стоимость:

      900 руб.

    Заказать такую же работу
  • Программирование

    Определить оценки внутреннего и внешнего качества при разработке приложения Блокнот

    • Вид работы:

      Контрольная работа

    • Выполнена:

      9 ноября 2017

    • Стоимость:

      4 200 руб.

    Заказать такую же работу
  • Программирование

    Контрольная работа Математические основы обработки информации

    • Вид работы:

      Контрольная работа

    • Выполнена:

      22 октября 2017

    • Стоимость:

      3 500 руб.

    Заказать такую же работу
  • Программирование

    Аналитическая справка об участии воспитанников в жизни ДОУ

    • Вид работы:

      Набор текста (компьютерный)

    • Выполнена:

      12 октября 2017

    • Стоимость:

      400 руб.

    Заказать такую же работу