1

Все доброго времени суток!

Стоит задача добавить поддержку синтаксиса 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"


Задача стоит в учебных целях, срок ее сдачи уже прошел, но мне интересно узнать ее решение. Буду рад услышать любые ваши мысли, подсказки на этот счет.

Заранее спасибо!

Timofey
  • 11

0 Answers0