PEP 622 – можно ли использовать оператор сопоставления в качестве выражения?Python

Программы на Python
Ответить
Anonymous
 PEP 622 – можно ли использовать оператор сопоставления в качестве выражения?

Сообщение Anonymous »

PEP 622 представил оператор match в качестве альтернативы if-elif-else. Однако я не могу найти ни в предложении, ни в любом другом материале в Интернете вопрос о том, можно ли использовать оператор match как выражение, а не просто как оператор.
Пара примеров, чтобы было понятно:
Пример 1:

Код: Выделить всё

def make_point_2d(pt):
match pt:
case (x, y):
return Point2d(x, y)
case _:
raise TypeError("not a point we support")
Пример 2:

Код: Выделить всё

match response.status:
case 200:
do_something(response.data)
case 301 | 302:
retry(response.location)
В первом примере функция возвращает результат из предложения case, а во втором примере ничего не возвращается. Но я хочу иметь возможность сделать что-то вроде следующего гипотетического примера:

Код: Выделить всё

spouse = match name:
case "John":
"Jane"
case "David":
"Alice"
print(spouse)
Но он не компилируется.

Подробнее здесь: https://stackoverflow.com/questions/769 ... expression
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»