Во многих языках программирования (например, JavaScript) есть операторы switch
. Это блок кода, в котором значение сравнивается с цепочкой переключателей case
. При обнаружении соответствия выполняется код внутри нужного блока и после него. Кроме того, в части default
прописывается значение case
по умолчанию.
Оператор switch
в Python отсутствует. Однако его поведение можно имитировать двумя способами.
В этом случае эмулировать поведение 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)
Обратите внимание, что словарь находится внутри функции. Это более действенный способ, облегчающий чтение кода и его поддержку.
В поисках альтернативы оператору 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
Комментарии