Python Switch Case Statement
Unlike other programming languages, Python doesn’t provide a switch case instrument over the self.
However, it has many other constructs like a dictionary, lambda function, and classes to write a custom implementation of the Python switch case statement.
If you are keen to know why Python doesn’t have a switch case, then do refer the explanation at PEP 3103.
Before diving into further, let’s have a quick view of the most common example of a switch case statement in the C programming language.
A Typical Switch Case in C Programming
In C, you can only pass an integer or enum value to the switch-case statement.
Unlike the if…else block which requires evaluating expressions in each condition, the switch has a single point of interaction which leads to different paths of execution.
A switch is a control instruction which decides the control to flow based on the value of a variable or an expression.
In the below example, the variable ‘dayOfWeek’ is a constant integer variable which represents days in a week. And the switch-case block prints the name of the day based on its value.
switch (dayOfWeek) {
case 1:
printf("%s", Monday);
break;
case 2:
printf("%s", Tuesday);
break;
case 3:
printf("%s", Wednesday);
break;
case 4:
printf("%s", Thursday);
break;
case 5:
printf("%s", Friday);
break;
case 6:
printf("%s", Saturday);
break;
case 7:
printf("%s", Sunday);
break;
default:
printf("Incorrect day");
break;
}
There are a couple of facts to consider for the switch-case statement.
The expression under the switch gets evaluated once.
It should result in a constant integer value. [Note: In Python, we can alter this behavior.]
A case with a duplicate value should not appear.
If no case matches, then the default case gets executed.
Implement Python Switch Case Statement
Switch Case using a Dictionary
It is simple to use a dictionary for implementing the Python switch case statement. Follow the below steps.
First, define individual functions for every case.
Make sure there is a function/method to handle the default case.
Next, make a dictionary object and store each of the function beginning with the 0th index.
After that, write a switch() function accepting the day of the week as an argument.
The switch() calls the get() method on the dictionary object which returns the function matching the argument and invokes it simultaneously.
# Implement Python Switch Case Statement using Dictionary
def monday():
return "monday"
def tuesday():
return "tuesday"
def wednesday():
return "wednesday"
def thursday():
return "thursday"
def friday():
return "friday"
def saturday():
return "saturday"
def sunday():
return "sunday"
def default():
return "Incorrect day"
switcher = {
1: monday,
2: tuesday,
3: wednesday,
4: thursday,
5: friday,
6: saturday,
7: sunday
}
def switch(dayOfWeek):
return switcher.get(dayOfWeek, default)()
print(switch(1))
print(switch(0))
The output is as follows:
Monday
Incorrect day
Switch Case using a Class
It is quite easy to use a class for implementing the Python switch case statement. Let’s do it with an example.
In the below example, there is a PythonSwitch class which defines the switch() method.
It takes the day of the week as an argument, converts it to string and appends to the ‘case_’ literal. After that, the resultant string gets passed to the getattr() method.
The getattr() method returns a matching function available in the class.
If the string doesn’t find a match, then the getattr() returns the lambda function as default.
The class also have the definition for functions specific to different cases.
# Implement Python Switch Case Statement using Class
class PythonSwitch:
def switch(self, dayOfWeek):
default = "Incorrect day"
return getattr(self, 'case_' + str(dayOfWeek), lambda: default)()
def case_1(self):
return "Monday"
def case_2(self):
return "Tuesday"
def case_3(self):
return "Wednesday"
s = PythonSwitch()
print(s.switch(1))
print(s.switch(0))
The output is as follows:
Monday
Incorrect day
Σχόλια