Почему в 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]())