Get The Most Affordable Hosting in the World!

Starting at just $1.87/month, Vercaa offers unbeatable pricing for world-class web hosting services.

Fast, reliable, and secure hosting to power your website without breaking the bank. Plus, enjoy a free CDN for faster loading times worldwide!

Get Started Now!

Before its 3.10 version, Python lacked a feature similar to switch-case in C or C++. In Python 3.10, a pattern matching technique called match-case has been introduced, which is similar to the "switch case" construct.

match statement takes an expression and compares its value to successive patterns given as one or more case blocks. The usage is more similar to pattern matching in languages like Rust or Haskell than a switch statement in C or C++. Only the first pattern that matches gets executed. It is also possible to extract components (sequence elements or object attributes) from the value into variables.

Syntax

The basic usage of match-case is to compare a variable against one or more values.

match variable_name: case 'pattern 1' : statement 1 case 'pattern 2' : statement 2 … case 'pattern n' : statement n

Example

The following code has a function named weekday(). It receives an integer argument, matches it with all possible weekday number values, and returns the corresponding name of day.

 
def weekday(n): match n: case 0: return "Monday" case 1: return "Tuesday" case 2: return "Wednesday" case 3: return "Thursday" case 4: return "Friday" case 5: return "Saturday" case 6: return "Sunday" case _: return "Invalid day number" print (weekday(3)) print (weekday(6)) print (weekday(7))

Output

On executing, this code will produce the following output −

Thursday
Sunday
Invalid day number

The last case statement in the function has "_" as the value to compare. It serves as the wildcard case, and will be executed if all other cases are not true.

Combined Cases

Sometimes, there may be a situation where for more thanone cases, a similar action has to be taken. For this, you can combine cases with the OR operator represented by "|" symbol.

Example

 
def access(user): match user: case "admin" | "manager": return "Full access" case "Guest": return "Limited access" case _: return "No access" print (access("manager")) print (access("Guest")) print (access("Ravi"))

Output

The above code defines a function named access() and has one string argument, representing the name of the user. For admin or manager user, the system grants full access; for Guest, the access is limited; and for the rest, there’s no access.

Full access
Limited access
No access

List as the Argument

Since Python can match the expression against any literal, you can use a list as a case value. Moreover, for variable number of items in the list, they can be parsed to a sequence with "*" operator.

Example

 
def greeting(details): match details: case [time, name]: return f'Good {time} {name}!' case [time, *names]: msg='' for name in names: msg+=f'Good {time} {name}!\n' return msg print (greeting(["Morning", "Ravi"])) print (greeting(["Afternoon","Guest"])) print (greeting(["Evening", "Kajal", "Praveen", "Lata"]))

Output

On executing, this code will produce the following output −

Good Morning Ravi!
Good Afternoon Guest!
Good Evening Kajal!
Good Evening Praveen!
Good Evening Lata!

Using "if" in "Case" Clause

Normally Python matches an expression against literal cases. However, it allows you to include if statement in the case clause for conditional computation of match variable.

In the following example, the function argument is a list of amount and duration, and the intereset is to be calculated for amount less than or more than 10000. The condition is included in the case clause.

Example

 
def intr(details): match details: case [amt, duration] if amt<10000: return amt*10*duration/100 case [amt, duration] if amt>=10000: return amt*15*duration/100 print ("Interest = ", intr([5000,5])) print ("Interest = ", intr([15000,3]))

Output

On executing, this code will produce the following output −

Interest = 2500.0
Interest = 6750.0



The End! should you have any inquiries, we encourage you to reach out to the Vercaa Support Center without hesitation.
這篇文章有幫助嗎? 1 用戶發現這個有用 (1 投票)