python的switch实现

上一篇 / 下一篇  2011-06-15 11:08:26 / 个人分类:python

python中没有现成的swith --- case 控制流,可以通过如下方法实现:
一:通过字典实现
type="sms"
advtype={
             "sms":"select id from advertising where dtype like 'SMSAdvertising' ORDER BY RAND() limit 0,1",
             "mms":"select id from advertising where dtype like 'MMSAdvertising' ORDER BY RAND() limit 0,1",
             "mma":"select id from advertising where dtype like 'MMAAdvertising' ORDER BY RAND() limit 0,1",
             "page":"select id from advertising where dtype like 'PageAdvertising' ORDER BY RAND() limit 0,1",
             "installer":"select id from advertising where dtype like 'InstallerAdvertising' ORDER BY RAND() limit 0,1"
    }
 print   advtype.get(type.lower())
二、通过自编类或者函数实现(这个有点麻烦,但是也更灵活)

class switch(object):
 def __init__ (self,value): #初始化需要匹配的值value
  self.value=value
  self.fall=False      #如果匹配到的case语句中没有break,则fall为true.
 def __iter__ (self):
  yield self.match     #调用match方法,来返回一个生成器
  raise StopIteration  #StopIteration异常来判断for循环是否结束
 def match (self,*args):
  if self.fall or not args: #模拟case子句的方法
   return True           #如果fall为true,则继续执行下面的case子句或case子句没有匹配项,则流转到默认分支
  elif self.value in args:  #匹配成功
   self.fall=True
   return True
  else:                     #匹配失败
   return False

operator="+"
x=1
y=2
for case in switch(operator):
 if case("+"):
  print x+y
  break
 if case("-"):
  print x-y
  break
 if case("*"):
  print x*y
  break
 if case("/"):
  print x/y
  break
 else:
  print ""



TAG:

 

评分:0

我来说两句

Open Toolbar