python使用字典实现switch_python用字典实现switch

因为python没有switch语句,一直以来都是用多个if..elif..来实现相同逻辑.

今天看到一个凶残暴力的实现方式,于是动手写写,记下来

from distutils import log

def stateA():

log.warn('stateA called')

def stateB():

log.warn('stateB called')

def stateC():

log.warn('stateC called')

def stateDefault():

log.warn('stateDefault called')

cases = {'a':stateA, 'b':stateB, 'c':stateC}

def switch(case):

if case in cases:

cases[case]()

else:

stateDefault()

def test():

switch('b')

switch('c')

switch('a')

switch('x')

test()

如果每个分支需要处理的逻辑很少,更是可以用lamdba简化,如下:

from distutils import log

cases = {'a':lambda:log.warn('in stateA'), 'b':lambda:log.warn('in stateB'),

'c':lambda:log.warn('in stateC')}

def switch(case):

if case in cases:

cases[case]()

else:

log.warn('in stateDefualt')

def test():

switch('b')

switch('c')

switch('a')

switch('x')

test()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值