可以很容易地通过一系列的 ​​if... elif... elif... else​​. 或者字典dict来代替switch case 语句

下面对于switch语句语法有一些建议,但是对于是否以及如何进行范围测试还没有达成共识。

完整的细节和当前状态见 ​​PEP 275​​。

对于需要从大量可能性中进行选择的情况,可以创建字典将case值映射到要调用的函数。

例如:

def function_1(...):
...

functions = {'a': function_1,
'b': function_2,
'c': self.method_1, ...}

func = functions[value]
func()

对于调用对象上的方法,你可以进一步简化使用getattr()内置检索方法与特定的名称 :

def visit_a(self, ...):
...
...

def dispatch(self, value):
method_name = 'visit_' + str(value)
method = getattr(self, method_name)
method()

建议对方法名使用前缀,如本例中的 visit_。没有这样的前缀,如果值来自不可信的源,攻击者就可以调用对象上的任何方法。

以上内容参考文档:​​Why isn’t there a switch or case statement in Python?​

 

-------用字典代替switch case default----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 用字典代替其他语言的 switch case default 示例

def isSunday():
return 'Sunday'
def isMonday():
return 'Monday'
def isTuesday():
return 'Tuesday'
def isWednesday():
return 'Wednesday'
def isThursday():
return 'Thursday'
def isFriday():
return 'Friday'
def isSaturday():
return 'Saturday'
def defaultday():
return 'UnKnowDay, maybe is only for you'

replaceswitch = {
0: isSunday,
1: isMonday,
2: isTuesday,
3: isWednesday,
4: isThursday,
5: isFriday,
6: isSaturday,
}

days = input("输入数字0-6")
day_name = replaceswitch.get(int(days), defaultday)() # 第二个参数:当输入的内容不是字典中的key时所返回的内容,也就是其他语言中的default
print(day_name)