设计映射关系
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判断,即使客户端没有正确的字段信息,也可以保证执行顺序按计划进行。