其他语言中,switch语句大概是这样的
- switch (var)
- {
- case value1: do_some_stuff1();
- case value2: do_some_stuff2();
- ...
- case valueN: do_some_stuffN();
- default: do_default_stuff();
- }
而python本身没有switch语句,解决方法有以下3种:
A.使用dictionary
values = {
value1: do_some_stuff1,
value2: do_some_stuff2,
...
valueN: do_some_stuffN,
}
values.get(var, do_default_stuff)()B.使用lambda
result = {
'a': lambda x: x * 5,
'b': lambda x: x + 7,
'c': lambda x: x - 2
}[value](x)
C.Brian Beck提供了一个类 switch 来实现其他语言中switch的功能
class switch(object): def __init__(self, value): self.value = value self.fall = False def __iter__(self): yield self.match raise StopIteration def match(self, *args): if self.fall or not args: return True elif self.value in args: self.fall = True return True else: return Falsev = 'ten'for case in switch(v): if case('one'): print 1 break if case('two'): print 2 break if case('ten'): print 10 break if case('eleven'): print 11 break if case(): print "something else!"