当使用闭包和装饰器时,可以创建一个计数器函数,用于记录特定函数的调用次数。下面是一个示例代码:
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
时,每次调用时计数器都会增加,并打印出调用次数。
这样,我们可以使用这个计数器装饰器来统计任何函数的调用次数。