Почему в Python нет оператора switch или case?

У Python нет оператора switch / case из-за неудовлетворительных предложений. Никто не смог предложить реализацию, которая хорошо работает с синтаксисом Python и установленным стилем кодирования. Было много предложений, некоторые из которых можно найти в PEP 3103 - Заключение / Заявление.

Большинство языков программирования имеют переключатель / случай, потому что у них нет правильных конструкций отображения. Вы не можете сопоставить значение функции, поэтому у нее она есть. Но в 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]())

Источник: http://net-informations.com/python/iq/switch.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector