Что является эквивалентом Python для оператора case/switch?
Я хотел бы знать, есть ли Python-эквивалент для оператора case, такой как примеры, доступные на VB.net или C#?
2 ответа
В то время как официальные документы рады не предоставлять переход, я видел решение с использованием словарей.
Например:
# define the function blocks
def zero():
print "You typed zero.\n"
def sqr():
print "n is a perfect square\n"
def even():
print "n is an even number\n"
def prime():
print "n is a prime number\n"
# map the inputs to the function blocks
options = {0 : zero,
1 : sqr,
4 : sqr,
9 : sqr,
2 : even,
3 : prime,
5 : prime,
7 : prime,
}
Затем вызывается эквивалентный блок переключателей:
options[num]()
Это начинает разваливаться, если вы сильно зависите от провала.
Прямая замена if
/elif
/else
,
Тем не менее, во многих случаях есть лучшие способы сделать это в Python. Смотрите " Замены для оператора switch в Python?".