Skip to content
Advertisement

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

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?
        )

Advertisement

Answer

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)}")
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement