python中那些可以让你减少if-else的操作

设计映射关系
def doSomething(condition):
    if condition == 0:
        work()
    else if condition == 1:
        study()
    else if condition == 2:
        palyGames()
    ...

显然可以设计一个映射关系,可以让结构更加清爽。

def doSomethin(condition):
    mapDict = {0:work, 1:study, 2:playGames}
    result = mapDict[condition]()
setdefault 仅限操作字典结构

这个函数通常使用在:当作为服务端接收客户端消息,而客户端的信息通常会设计成jason格式,而服务端解析成字典格式后,需要判断某个key是否在传过来的信息中。如果不使用这个函数,你会发现自己将需要使用很多if判断,或者静态断言。比如

def getInfoFromRequest(request):
    if 'name' in request.keys():
        doSomethingAboutHaveName(request['name'])
    else:
        doSomethingAboutNoName()
    if 'age' in request.keys():
        doSomethingAboutAge(request['age'])
    else:
        doSomethingAboutNoAge()
     ...

这样会让自己的代码结构臃肿不堪,如果采用setdefault可以先在消息检查函数中检查一遍,给某些约定好的字段一个默认值,就不用担心没有该字段的值,导致一些业务层面的错误。

def check(request):
    setdefault(request['name'],'qiu')
    setdefault(request['age'],'25')
    ...

def getInfoFromRequest(request):
    check(request)
    doSomethingAboutHaveName(request['name'])
    doSomethingAboutAge(request['age'])
	...

这样改后,消除了if判断,即使客户端没有正确的字段信息,也可以保证执行顺序按计划进行。

参考文档

Python项目代码太多if-else? 这样优化才优雅!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值