Почему Python не имеет коммутационный корпус?

Я новичок в Python. Пожалуйста, объясните, почему у python нет ключа-коммутатора?

Большое вам спасибо

+6
12 окт. '17 в 3:44
источник поделиться
4 ответа

Мы рассмотрели его в какой-то момент, но не имея способа объявить именованные константы, нет возможности создать эффективную таблицу перехода. Таким образом, все, что у нас осталось, - это синтаксический сахар для чего-то, что мы могли бы сделать с цепями if-elif-elif-else.

Смотрите PEP 275 и PEP 3103 для полного обсуждение.

Примерно обоснованность заключается в том, что различные предложения не оправдали ожиданий людей о том, что произойдет с коммутатором, и они не смогли улучшить существующие решения (например, на основе словарей, if-elif-chain, getattr-based отправки или старомодного полиморфизма для объектов с различными реализациями для одного и того же метода).

+19
12 окт. '17 в 3:48
источник

В документации есть буквально раздел в ответах. См. Ниже:

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

TL; DR: существующие альтернативы (динамическая отправка через цепочки getattr или dict.get, if/elif) полностью перекрывают все варианты использования.

+3
12 окт. '17 в 3:53
источник
def f(x):
    return {
        1 : 'output for case 1',
        2 : 'output for case 2',
        3 : 'output for case 3'
    }.get(x, 'default case')   

Вы можете использовать это как случай переключения в python, и если условие не соответствует, оно вернет значение по умолчанию, если условие не соответствует

+1
20 дек. '17 в 9:06
источник

Даже если Java, C++, C# поддерживают их, я никогда не использовал switch statements, так как я могу выполнить ту же работу с прикованными операторами if.

0
06 дек. '17 в 20:48
источник

Посмотрите другие вопросы по меткам или Задайте вопрос