Все доброго времени суток!
Стоит задача добавить поддержку синтаксиса switch case в python. Я читал ответ по схожему вопросу (Есть ли в Python оператор switch case?), но там не приводится подобного решения. Вроде как для реализации полезны должны быть модули ast и dis.
Необходимо добавить поддержку switch statement в функции, декорированные как @support_switch и в функцию exec:
# Пример 1
@support_switch
def my_function_with_switch(a: int, b: int, c: int):
"""
switch a:
case b:
return True
case c:
return False
"""
assert my_function_with_switch(2*2, 4, 5)
# Пример 2
a, b, c = 2, 4, 5
d = None
exec("""switch a*a:
case b:
print("Foo")
d = 1
break
case c:
print("Bar")
d = 2
break
assert d == 1
""")
# stdout будет содержать "Foo"
Задача стоит в учебных целях, срок ее сдачи уже прошел, но мне интересно узнать ее решение. Буду рад услышать любые ваши мысли, подсказки на этот счет.
Заранее спасибо!