Чтобы продемонстрировать, что функции в Python являются объектами, посмотрим на то, как можно их использовать.
Вам когда-нибудь приходилась писать код, который выглядит примерно так?
Во многих языках программирования есть конструкция switch, которая, бесспорно, облегчает написание кода.
В Python этой контрукции нет, но можно добиться того же (с меньшим количеством строк кода), используя словарь (dict) с функциями.
Например, у нас есть три функции и нужно вызвать одну из функций, в зависимости от значения в переменной choice.
Вся магия происходит в строке
result = switch[choice].
Switch [choice] возвращает одну из функций-объектов (или вызывает KeyError). Потом вызываем result() – и всё 🙂
Важно! можно сохранить пару сток кода, добавив блок:
Здесь напрямую вызывается функция, которую возвращает switch[choice]. НО. Если функция возвращает KeyError (например из-за бага), то его можно поймать при помощи блока try…except. Эту ошибку трудно отследить, так как ее описание выглядит просто как wrong.
Небольшое замечание – в целом в блок try…except нужно стараться “заворачивать” как можно меньше кода.
Все статьи по теме ООП:
1. Объекты и ООП
– Процедурное программирование
– Разделение данных
2. Доступ к объекту
3. Создание новых объектов
– Функции – это объекты
4. Классы, определенные пользователем
5. Сила объектов