Как реализовать функции Switch Case в Python? [2022]
Опубликовано: 2021-01-08Оглавление
Введение
Вы когда-нибудь задумывались, есть ли альтернатива написанию этих сложных операторов If-else на Python? Если вы не хотите, чтобы несколько операторов If загромождали ваш код, вам следует рассмотреть возможность использования оператора Switch case, который обеспечивает более чистый и быстрый способ реализации потока управления в вашем коде. В отличие от C++, Java, Ruby и других языков программирования, Python не предоставляет оператора switch case, но предлагает несколько обходных путей, позволяющих заставить этот оператор работать.
Например, Python позволяет вам создавать фрагменты кода, которые работают как операторы case Python Switch в других языках программирования. Вы узнаете больше о способах реализации операторов switch-case позже в этом блоге. Если вам интересно узнать больше о python, ознакомьтесь с нашими курсами по науке о данных.
Что такое оператор Switch в Python?
В общем, переключатель — это механизм управления, который проверяет значение, хранящееся в переменной, и выполняет соответствующие операторы case. Оператор Switch case вводит поток управления в вашу программу и гарантирует, что ваш код не загроможден несколькими операторами if.
Следовательно, ваш код выглядит дотошным и прозрачным для зрителей. Это замечательная функция программирования, которую программисты используют для реализации потока управления в своем коде. Оператор Switch case работает путем сравнения значений, указанных в операторах case, с переменными в вашем коде.
Как реализовать оператор Python Switch Case
Если вы всегда программировали на таких языках, как C++ или Java, вам может показаться странным, что в Python нет оператора switch case. Вместо этого Python предлагает множество обходных путей, таких как словарь, классы Python или лямбда-функции Python для реализации операторов switch-case.
Если вы хотите узнать точную причину отсутствия оператора switch case в python, вам следует проверить PEP 3103 .
Прежде чем углубиться в эти альтернативы, давайте сначала посмотрим, как функция case case обычно работает в других языках программирования.
В приведенном ниже примере мы использовали язык программирования C.
переключатель (месяцГода) { Дело 1: printf("%s", январь); перерыв; случай 2: printf("%s", февраль); перерыв; случай 3: printf("%s", март); перерыв; случай 4: printf("%s", апрель); перерыв; случай 5: printf("%s", май); перерыв; случай 6: printf("%s", июнь); перерыв; случай 7: printf("%s", июль); перерыв; случай 8: printf("%s", август); перерыв; случай 9: printf("%s", сентябрь); перерыв; случай 10: printf("%s", октябрь); перерыв; случай 11: printf("%s", ноябрь); перерыв; случай 12: printf("%s", декабрь); перерыв; По умолчанию: printf("Неверный месяц"); перерыв; } |
Теперь давайте углубимся в альтернативы функции переключения регистра Python и поймем, как эти альтернативы работают, с помощью примеров.
Читайте: Карьерные возможности в Python: все, что вам нужно знать
Использование сопоставления словаря
Если вы знакомы с другими языками программирования, то должны знать, что словарь использует пары ключ-значение для хранения группы объектов в памяти. Когда вы используете словарь в качестве альтернативы операторам switch-case, ключи пары ключ-значение работают как case.
В следующем примере показана реализация оператора switch case с использованием словаря. Здесь мы определяем функцию month() для вывода того, какой месяц является месяцем года.
Во-первых, начните с создания операторов case и напишите отдельные функции для каждого случая. Убедитесь, что вы пишете функцию, которая работает со случаем по умолчанию.
деф январь(): возвращение «январь» деф февраль(): возвращение «Февраль» деф марш(): вернуться «марш» деф апрель(): возвращение «апрель» защита может(): вернуть «может» деф июнь(): вернуться «июнь» деф июль(): возвращение «июль» деф август(): вернуться «август» деф сентябрь(): возвращение «сентябрь» деф октябрь(): вернуть «Октябрь» деф ноябрь(): вернуться «ноябрь» декабрь(): возвращение «декабрь» по умолчанию(): вернуть «Неверный месяц» |
Затем создайте объект словаря в Python и сохраните все функции, которые вы определили в своей программе.
переключатель = { 0: 'январь', 1: 'февраль', 2: «марш», 3: 'апрель', 4: 'может', 5: 'июнь', 6: 'июль', 7: 'август', 8: 'сентябрь', 9: «октябрь», 10: 'ноябрь', 11: 'декабрь' } |
Наконец, создайте в своей программе функцию-переключатель, которая должна принимать целое число в качестве входных данных, выполнять поиск по словарю и вызывать соответствующие функции.
месяц определения (monthOfYear): вернуть switcher.get (monthOfYear, по умолчанию) () |
Полный код будет выглядеть так
деф январь(): возвращение «январь» деф февраль(): возвращение «Февраль» деф марш(): вернуться «марш» деф апрель(): возвращение «апрель» защита может(): вернуть «может» деф июнь(): ![]() вернуться «июнь» деф июль(): возвращение «июль» деф август(): вернуться «август» деф сентябрь(): возвращение «сентябрь» деф октябрь(): вернуть «Октябрь» деф ноябрь(): вернуться «ноябрь» декабрь(): возвращение «декабрь» по умолчанию(): вернуть «Неверный месяц»
переключатель = { 0: 'январь', 1: 'февраль', 2: «марш», 3: 'апрель', 4: 'может', 5: 'июнь', 6: 'июль', 7: 'август', 8: 'сентябрь', 9: «октябрь», 10: 'ноябрь', 11: 'декабрь' } месяц определения (monthOfYear): вернуть switcher.get (monthOfYear, по умолчанию) () печать (переключатель (1)) печать (переключатель (0)) |
Приведенный выше код печатает следующий вывод
февраль январь |
Читайте также: 42 интересных идеи и темы для проектов Python для начинающих
Использование классов Python
Вы также можете использовать классы Python в качестве альтернативы реализации операторов switch-case. Класс — это конструктор объекта, который имеет свойства и методы. Давайте разберемся в этом дальше с помощью того же примера выше. Здесь мы определим метод переключателя внутри класса переключателя Python.
Пример
Во-первых, мы определим метод переключателя внутри класса переключателя Python, который принимает месяц года в качестве аргумента и преобразует результат в строку.
класс PythonSwitch: def месяц (я, месяц года): по умолчанию = «Неверный месяц» вернуть getattr(self, 'case_' + str(monthOf Year), лямбда: по умолчанию)() |
Примечание. В приведенном выше примере мы использовали две вещи: ключевое слово lambda и метод getattr().
- Мы используем ключевое слово lambda для определения анонимной функции в Python. Ключевое слово Lambda вызывает функцию по умолчанию, когда пользователь вводит неверный ввод.
- Метод getattr() используется для вызова функции в Python.
Теперь создайте отдельные функции для каждого случая.
деф январь(я): возвращение «январь»
деф февраль(я): возвращение «Февраль» деф марш (я): вернуть «март»
деф апрель(я): возвращение «апрель»
деф может(я): вернуть «май»
деф июнь(я): вернуться «июнь» деф июль (сам): возвращение «июль»
деф август(я): возвращение «август»
деф сентябрь (я): возвращение «сентябрь» деф октябрь (я): вернуть «Октябрь»
деф ноябрь(я): вернуться «ноябрь»
декабрь (сам): возвращение «декабрь» |
Полный код будет выглядеть так
класс PythonSwitch: def месяц (я, месяц года): по умолчанию = «Неверный месяц» вернуть getattr(self, 'case_' + str(monthOf Year), лямбда: по умолчанию)() деф январь(я): возвращение «январь»
деф февраль(я): возвращение «Февраль»
деф марш (я): вернуть «март»
деф апрель(я): возвращение «апрель»
деф может(я): вернуть «май»
деф июнь(я): вернуться «июнь» деф июль (сам): возвращение «июль»
деф август(я): возвращение «август»
деф сентябрь (я): возвращение «сентябрь» деф октябрь (я): вернуть «Октябрь»
деф ноябрь(я): вернуться «ноябрь»
декабрь (сам): возвращение «декабрь» my_switch = PythonSwitch() распечатать (my_switch.month(1)) распечатать (my_switch.month(10)) |
Приведенный выше код печатает следующий вывод
январь Октябрь |
Проверьте: Зарплата разработчиков Python в Индии
Заключение
В этом блоге вы узнали об операторах switch-case, каковы альтернативы операторам switch-case и как их использовать. Как объяснялось выше, Python не имеет встроенной функции переключения регистра, но вы всегда можете использовать эти альтернативы, чтобы ваш код выглядел аккуратно и чисто и повышал производительность.
Если вам интересно узнать о науке о данных, ознакомьтесь с программой IIIT-B & upGrad Executive PG по науке о данных, которая создана для работающих профессионалов и предлагает более 10 тематических исследований и проектов, практические семинары, наставничество с отраслевыми экспертами, 1 -на-1 с отраслевыми наставниками, более 400 часов обучения и помощи в трудоустройстве в ведущих фирмах.
Отличие обычного словаря от словаря Python.
Словарь Python или «Dict» — это встроенная структура данных Python, которая используется для хранения неупорядоченного набора элементов. В отличие от других структур данных Python, в которых хранятся отдельные значения, структура данных словаря хранит пары ключ-значение, где каждый ключ уникален. Он не запоминает порядок вставки пар ключ-значение и перебирает ключи. С другой стороны, Ordered Dictionary или OrderedDict отслеживает порядок вставки пар ключ-значение. Он также потребляет больше памяти, чем обычный словарь в Python, из-за реализации двусвязного списка. Если вы удалите и повторно вставите один и тот же ключ, он будет вставлен в исходное положение, поскольку OrderedDict запоминает порядок вставки.
Какие операции namedtuple делают его удобным для использования в случаях переключения?
namedtuple в Python выполняет различные операции. Ниже приведен список некоторых наиболее распространенных операций, выполняемых namedtuple. Доступ к элементам в namedtuple можно получить по их индексам, в отличие от словаря. Альтернативный способ доступа к элементам — по имени ключа. Функция make() возвращает именованный кортеж. Функция _asadict() возвращает упорядоченный словарь, созданный из сопоставленных значений. Функция _replace() принимает в качестве аргумента имя ключа и изменяет сопоставленные с ним значения. Функция _fileds() возвращает все имена ключей данного namedtuple.
Когда мы предпочитаем списки для хранения данных?
Список Python считается лучшей структурой данных для хранения данных в следующих сценариях. Список может использоваться для хранения различных значений с разными типами данных, и к ним можно получить доступ только по их соответствующим индексам. Когда вам нужно выполнить математические операции над элементами, можно использовать список, поскольку он позволяет вам математически оперировать элементами напрямую. Поскольку размер списка может быть изменен, его можно использовать для хранения данных, когда вы не уверены в количестве сохраняемых элементов. Элементы списка легко изменяются, и он также может хранить повторяющиеся элементы, в отличие от набора и словаря.