Почему в Python нет оператора switch или case?
У Python нет оператора switch / case из-за неудовлетворительных предложений. Никто не смог предложить реализацию, которая хорошо работает с синтаксисом Python и установленным стилем кодирования. Было много предложений, некоторые из которых можно найти в - Заключение / Заявление.
Большинство языков программирования имеют переключатель / случай, потому что у них нет правильных конструкций отображения. Вы не можете сопоставить значение функции, поэтому у нее она есть. Но в Python вы можете легко иметь таблицу сопоставления (dict), где определенное значение сопоставляется определенной функции. Функции Python - это значения первого класса, вы можете использовать эти функции в качестве значений метода get get (key [, default]). С точки зрения производительности, поиск в словаре Python почти наверняка будет более эффективным, чем любое решение, которое вы можете выполнить самостоятельно.
def fnc(x):
return {
'one': 1,
'two': 2,
}.get(x, 5) # 5 is default if x not found
В приведенном выше примере вместо значений 1, 2 вы можете иметь функции, классы, списки, dicts абсолютно все, что вы хотите.
Пример
def east(): return "East"
def west(): return "West"
def north(): return "North"
def south(): return "South"
# map the inputs to the function blocks
switch_case = {
1 : east,
2 : west,
3 : north,
4 : south
}
print(switch_case[2]())
