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

在很多场景下,我们可能需要写大量的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函数​​​​​​​

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章