if else
的分支结构很好用,但是滥用它的后果是使代码的缩进层次变得很复杂。
def func(choice):
if choice == 1:
pass
elif choice == 2:
pass
elif choice == 3:
pass
elif choice == 4:
pass
elif choice == 5:
pass
这种经典的写法看上去整洁好看,实际上不推荐。原因如下:
1.**效率低。**如果我们选择最后一个选项,那么它还是会对前面每一项都进行判断。
2.如果pass中省略的代码更加复杂,会导致缩进层次更加复杂。
可以利用模块化编程的思想对上面进行改进,
我们先将上面代码中pass语句封装成一个个函数,变成这样的:
def func(choice):
if choice == 1:
func1()
elif choice == 2:
func2()
elif choice == 3:
func3()
elif choice == 4:
func4()
elif choice == 5:
func5()
接下来考虑如何去掉if else
语句。
**python中一切皆对象。**可以利用列表或元组来存储函数。而因为元组占用的内存比列表小,所以推荐使用元组。
def func(choice):
func_list = (func1, func2, func3, func4, func5)
func_list[choice]()