How to access the matched value in the default case of structural pattern matching?

Viewed 197

With Python 3.10's match statement, is it possible to use the value met in the default case?

Or does this need to be assigned a variable before match so it can be used in the default case?

match expensive_calculation(argument):
    case 'APPLE':
        value = 'FOO'
    case 'ORANGE':
        value = 'BAR'
    case _:
        raise Exception(
           "Wrong kind of fruit found: " +
           str(expensive_calculation(argument))
           # ^ is it possible to get the default value in this case?
        )
1 Answers

You can use an as pattern:

match expensive_calculation(argument):
  case 'APPLE':
    value = 'FOO'
  case 'ORANGE':
    value = 'BAR'
  case _ as argument: #here, using `as` to save the wildcard default to `argument`
    raise Exception(f"Wrong kind of fruit found: {str(argument)}")
Related