python使用装饰器记录函数执行次数


def set_func(func):
    num = [0]   # 闭包中外函数中的变量指向的引用不可变
    def call_func():
        func()
        num[0] += 1
        print("执行次数",num[0])
    return call_func

# 待测试方法
@set_func
def test():
    pass

test()
test()
test()

# 执行次数 1
# 执行次数 2
# 执行次数 3

使用nonlocal 访问修改外部函数变量

def set_func(func):
    num = 0   # 闭包中外函数中的变量指向的引用不可变
    def call_func():
        func()
        nonlocal num # 使用nonlocal 访问修改外部函数变量
        num += 1
        print("执行次数",num)
    return call_func

# 待测试方法
@set_func
def test():
    pass

test()
test()
test()

# 执行次数 1
# 执行次数 2
# 执行次数 3

你可能感兴趣的:(python3,python)