Как посчитать сколько раз вызвана функция с помощью декоратора

Как в декораторе можно хранить переменную, которая показывала бы сколько раз вызывали данную функцию? Первое что пришло в голову - заюзать вместе декоратор с замыканиями, но дальше идеи ничего не пришло в голову.

def decor(func):
    def wrapper():
        i=0
        func()
        i+=1
        print(f'{i}')
    return wrapper

@decor
def test():
    pass

test()
test()
test()

    

Ответы (1 шт):

Автор решения: CrazyElf

Вынести переменную-счётчик в сам декоратор:

def decor(func):
    i=0
    def wrapper():
        nonlocal i
        func()
        i+=1
        print(f'{i}')
    return wrapper

Тогда печатает так:

1
2
3
→ Ссылка