как сделать еще в случае совпадения python 3.10

Python недавно выпустил match case в Python версии 3.10. Вопрос в том, как мы можем сделать значение по умолчанию для case в python. Я могу сделать if elif, но не знаю, как это сделать. Ниже приведен код.

      x = "hello"
match x:
     case "hi":
          print(x)
     case "hey":
          print(x)
     default:
          print("not matched")

Я сам добавил это значение по умолчанию. Я хочу знать, как это сделать в Python

4 ответа

Решение

Вы можете определить регистр по умолчанию в python. Для этого вы используете подстановочный знак _. Следующий код демонстрирует это.

      x = "hello"
match x:
     case "hi":
          print(x)
     case "hey":
          print(x)
     case _:
          print("not matched")
      match subject:
    case <pattern_1>:
        <action_1>
    case <pattern_2>:
        <action_2>
    case <pattern_3>:
        <action_3>
    case _:
        <action_wildcard>

cf: https://docs.python.org/3.10/whatsnew/3.10.html#syntax-and-operations

      for thing in [[1,2],[2,11],[12,14,13],[10],[10,20,30,40,50]]:
match thing:
    case [x]:
        print(f"single value: {x}")
    case [x,y]:
        print(f"two values: {x} and {y}")
    case [x,y,z]:
        print(f"three values: {x}, {y} and {z}")       
    case _: # change this in default 
        print("too many values")

Если вы хотите прочитать и получить больше информации: https://towardsdatascience.com/pattern-matching-in-python-3-10-6124ff2079f0

      def option_a():
    print('A')
    
def option_b():
    print('B')

def option_c():
    print('C')

def option_d():
    print('D')
    
def by_default():
    print('Default choice')

_switch_dict = {0:option_a, 1:option_b, 2:option_c, 3:option_d, 4:option_b, 5:option_c}

def switch(choice):
    selected_option = _switch_dict.get(choice, by_default)
    selected_option()

switch(12)
Другие вопросы по тегам