关于在python中避免if分支太多,提高方法的可读性

您所在的位置:网站首页 python代码太长怎么办 关于在python中避免if分支太多,提高方法的可读性

关于在python中避免if分支太多,提高方法的可读性

2024-07-16 06:43| 来源: 网络整理| 查看: 265

在很多场景下,我们可能需要写大量的if  else分支来进行判断,然后根据结果再进入下一步的业务逻辑。这样可能导致一个方法的行数会大大增加,增加阅读的难度,并且健壮性变差。

 

目前只想到了2种场景下,代替if else 的方案。

以优化下面代码为例,下面是原代码:

def slove(): number = input("please input a number, limit 0-5") if number == "1": time.sleep(1) print("the number that you input is: ",1) if number == "2": time.sleep(1) print("the number that you input is: ",2) if number == "3": time.sleep(1) print("the number that you input is: ",3) if number == "4": time.sleep(1) print("the number that you input is: ",4) if number == "5": time.sleep(1) print("the number that you input is: ",5) else: print("a error occur ,check") time.sleep(1) print("program exit...") exit(0)

 

第一种优化场景,判断条件为数字类型:

将每个分支拆分为一个函数。

def test1(number): if number == "1": print("the number that you input is: ",1) def test2(number): if number == "2": print("the number that you input is: ", 2) def test3(number): if number == "3": print("the number that you input is: ", 3) def test4(number): if number == "4": print("the number that you input is: ", 4) def test5(number): if number == "5": print("the number that you input is: ", 5) # else: # return

再循环这个函数列表

def slove(): number = input("please input a number, limit 0-5") solve_list = [test1, test2, test3, test4, test5] for func in solve_list: func(number) if __name__ == '__main__': slove()

 

第二种场景,也是比较常见的,判断条件为字符串类型

拆分出来的函数不变,修改slove函数。

def slove2(): number = input("please input testN") solve_list = [test1, test2, test3, test4, test5] for func in solve_list: # func.__name__取函数的名字 if number == func.__name__: func(number) if __name__ == '__main__': slove2()

根据传入的字符串,执行对应的分支函数。

 

 

 

       最后解释一下,拆分if else并不能提升代码的执行效率,如果业务很复杂的话,可能还会比直接写if else要低一些(因为怎么拆分还要考虑一下)。但拆分出来后,每一个分支的业务会更直观,代码整体可读性会更好。

 

 

python complex函数

python避坑篇

python部分高级用法

python开发手册

python内置函数(下)

python内置属性,函数

python异常处理

python lambda函数​​​​​​​

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3