当使用闭包和装饰器时,可以创建一个计数器函数,用于记录特定函数的调用次数。下面是一个示例代码:
def counter(func):
# 计数器函数,用于记录特定函数的调用次数
count = 0
def wrapper(*args, **kwargs):
nonlocal count
count += 1
print(f"函数 {func.__name__} 已被调用 {count} 次")
return func(*args, **kwargs)
return wrapper
# 使用计数器装饰器
@counter
def my_function():
print("执行函数")
# 调用被装饰的函数
my_function() # 输出:函数 my_function 已被调用 1 次
my_function() # 输出:函数 my_function 已被调用 2 次
在上述示例中,counter 是一个装饰器函数。它接受一个函数 func 作为参数,并返回一个新的函数 wrapper。在 wrapper 函数中,我们首先声明一个 count 变量用于存储调用次数,并使用 nonlocal 声明该变量为非局部变量。每当 wrapper 被调用时,我们将 count 加1,并打印出函数的调用信息。最后,返回被装饰函数 func 的执行结果。
通过使用装饰器 @counter,我们将函数 my_function 装饰为计数器函数。当我们调用 my_function 时,每次调用时计数器都会增加,并打印出调用次数。
这样,我们可以使用这个计数器装饰器来统计任何函数的调用次数。