编写一个Python程序,实现一个计数器函数,该函数能够记录特定函数的调用次数。你需要使用闭包和装饰器来实现这个功能。

当使用闭包和装饰器时,可以创建一个计数器函数,用于记录特定函数的调用次数。下面是一个示例代码:

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 时,每次调用时计数器都会增加,并打印出调用次数。

这样,我们可以使用这个计数器装饰器来统计任何函数的调用次数。