как сделать еще в случае совпадения 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)