python3 在3.10前并没有类似其他语言的switch语法,如果要使用多分支结构就要使用大量的if elif else,如果使用过多,会显得代码有些臃肿,例如以下代码:
def start():
print("start")
def stop():
print("stop")
def status():
print("status")
def default():
print("default")
if __name__ == "__main__":
action = 'start'
if action == 'start':
start()
elif action == 'stop':
stop()
elif action == 'status':
status()
else:
default()
逻辑上没有问题,但是如果条件越来越多,以后要添加新的功能就要不停的加elif。
为了解决这个问题,可以使用字典来解决。
概述一下就是:
1、把不同的函数对象,作为值用
2、直观的字符串,作为键(一般与函数同名)。
3、把两者对应起来,存储在字典中。
4、然后根据具体动作调用函数。
代码如下
def start():
print("start")
def stop():
print("stop")
def status():
print("status")
def default():
print("default")
if __name__ == "__main__":
action = 'start'
job = {
'start': start,
'stop': stop,
'status': status,
'default': default
}
if action in job:
job[action]()
else:
job['default']()
注意:在将函数作为值写入到字典时,是要将其作为对象进行处理,并不是要调用函数,因此,不要写'()',只有在下文需要真正调用的时候才需要加上'()',以进行调用。
这个写法是在看同事的代码学的,当时是用于接收消息队列中不同类型工作而写的。感觉很简洁,作为非专业程序员,还是挺有意思的。