当需要用到3个及以上的if...elif...else时就要考虑该方法进行简化
通过将函数名称当做字典的值,利用字典的关键字查询,可以快速定位函数,进行执行
【场景】用户查询信息,输入fn查询,执行对应函数
1 # 简单用十个函数模拟查询函数 2 def fun1(): 3 print("查询1") 4 def fun2(): 5 print("查询2") 6 def fun3(): 7 print("查询3") 8 def fun4(): 9 print("查询4") 10 def fun5(): 11 print("查询5") 12 def fun6(): 13 print("查询6") 14 def fun7(): 15 print("查询7") 16 def fun8(): 17 print("查询8") 18 def fun9(): 19 print("查询9") 20 def fun10(): 21 print("查询10")
传统方法 if...elif...elif...else(写起来很麻烦)
choice = input("请输入查询内容fn:") if choice == 'f1': fun1() elif choice == 'f2': fun2() elif choice == 'f3': fun3() elif choice == 'f4': fun4() elif choice == 'f5': fun5() elif choice == 'f6': fun6() else: fun10() """ 请输入查询内容fn:f1 查询1 """
将函数当做字典的值
# 创建字典 info = {'f1': fun1, 'f2': fun2, 'f3': fun3, 'f4': fun4, 'f5': fun5, 'f6': fun6, 'f7': fun7, 'f8': fun8, 'f9': fun9, 'f10': fun10} choice = input("请输入查询内容fn:") info_value = info.get(choice) print(info_value) if info_value: info_value() else: print('输入异常') """ 请输入查询内容fn:f11 None 输入异常 """
获取字典中的value 使用get()函数,这样当关键字不存在时,返回的值的None,不会导致程序报错