3.20---函数对象与闭包函数应用

1、函数对象优化多分支if的代码

def func1():
    print("功能1")
def func2():
    print("功能2")
def func3():
    print("功能3")
def func4():
    print("功能4")
dic_func = {"0":("退出",exit),"1":("功能1",func1),"2":("功能2",func1),"3":("功能3",func1),"4":("功能4",func1)}

import time
while True:
    for key in dic_func:
        print(key,dic_func[key][0])
    cmd = input("请输入指令:")
    if cmd.isdigit():
        if cmd in dic_func:
            dic_func[cmd][1]()
        else:
            print("不存在该指令!")
    else:
        print("请输入数字!")
    input("请按Enter键继续。")

2、编写计数器功能,要求调用一次在原有的基础上加一

'''
        温馨提示:
            I:需要用到的知识点:闭包函数+nonlocal
            II:核心功能如下:
                def counter():
                    x+=1
                    return x

        要求最终效果类似
            print(couter()) # 1
            print(couter()) # 2
            print(couter()) # 3
            print(couter()) # 4
            print(couter()) # 5
'''
def outter():
    x = 0
    def couter():
        nonlocal x
        x += 1          # 相当于x = x + 1 NameError:name 'couter' is not defined
        return x
    return couter


couter = outter()
print(couter())
print(couter())
print(couter())
print(couter())
print(couter())
原文地址:https://www.cnblogs.com/zhubincheng/p/12534847.html