Python3下使用字典实现类似switch功能

时间:2023-02-20 08:02:32

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']()

注意:在将函数作为值写入到字典时,是要将其作为对象进行处理,并不是要调用函数,因此,不要写'()',只有在下文需要真正调用的时候才需要加上'()',以进行调用。

这个写法是在看同事的代码学的,当时是用于接收消息队列中不同类型工作而写的。感觉很简洁,作为非专业程序员,还是挺有意思的。