介绍
表驱动法是一种编程模式(Scheme),从表里面查找信息而不使用逻辑语句(if 和case)
它的好处是消除代码里面到处出现的if、else、swith语句,让凌乱代码变得简明和清晰。
对简单情况而言,表驱动方法可能仅仅使逻辑语句更容易和直白,但随着逻辑的越来越复杂,表驱动法就愈发有吸引力。
正文
假如要实现以下功能,
输入('+',a,b),要返回 a+b
输入('-',a,b),要返回a-b
用if实现
def test(c,a,b):
if c == '+':
return a + b
elif c == '-':
return a - b
如果要加新的功能,比如 乘*、除/,就要更改test代码为
def test(c,a,b):
if c == '+':
return a + b
elif c == '-':
return a - b
elif c == '*':
return a * b
elif c == '/':
return a / b
那每当要添加该函数的功能,就必须修改该函数的内容。这样就破坏了封装性和违背了开闭原则
表驱动
利用表驱动,可以解决这个问题。
def add(a,b):
return a+b
def minus(a,b):
return a - b
func_dict = {'+':add,'-':minus}
print(func_dict['+'](1,2))
要加入乘法函数,只需添加一个mul函数,然后修改func_dict字典。
def mul(a,b):
return a * b
func_dict = {'+':add,'-':minus,'*':mul}
print(func_dict['*'](1,2))
这里的func_dict实际上就作为表驱动中的表给出,可以视作为一个配置文件,是动态更改的。
另外一些基础用法可见下面的两篇参考博客,也写的挺好。
参考
https://blog.csdn.net/qq_22555107/article/details/78884261
https://www.cnblogs.com/winner-0715/p/9382048.html#_label0
网友评论