Во многих языках программирования (например, JavaScript) есть операторы switch. Это блок кода, в котором значение сравнивается с цепочкой переключателей case. При обнаружении соответствия выполняется код внутри нужного блока и после него. Кроме того, в части default прописывается значение case по умолчанию.

Оператор switch в Python отсутствует. Однако его поведение можно имитировать двумя способами.

Использование функции словаря и get()

В этом случае эмулировать поведение switch можно через словарь Python. Нужно прописать сравнение с помощью переключателя case (ключа) и установить значение по умолчанию с помощью get().

def switch_dict(x):
    case_dict = {
        “a”: 1,
        “b”: 2,
        “c”: 3
    } 
    default_value = -1 
    return case_dict.get(x, default_value)

Для оптимизации кода и его лаконичности можно переписать функцию следующим образом:

def switch_dict(x):
   return {
      "a": 1,
      "b": 2,
      "c": 3
   }.get(x, -1)

Обратите внимание, что словарь находится внутри функции. Это более действенный способ, облегчающий чтение кода и его поддержку.

Операторы if/elif/else

В поисках альтернативы оператору switch не стоит забывать и о старой доброй классике — последовательности if, elif и else.

def switch_dict(x):
   if x == "a":
      return 1
   elif x == "b":
      return 2
   elif x == "c":
      return 3
   else:
      return -1

В сравнении с dict, этот способ более трудоемкий, но имеет свои плюсы. Если в каждом case будет выполняться несколько действий, то лучше организовать их через if. Кроме того, операторы if отлично подходят для реализации более сложных условий сравнения.

Читайте также:


Перевод статьи Jonathan Hsu: Two Replacements for Switch Statements in Python

Предыдущая статьяКак стать Git-мастером: 7 советов по повышению производительности
Следующая статья8 базовых алгоритмических задач на собеседованиях