Храните счётчик в замыкании и увеличивайте его через nonlocal при каждом вызове. Фабрика позволяет создать несколько независимых функций-счётчиков без глобального состояния.
Функция, считающая количество своих вызовов
Храните счётчик в замыкании и увеличивайте его через nonlocal при каждом вызове. Фабрика позволяет создать несколько независимых функций-счётчиков без глобального состояния.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте функцию, которая сохраняет число своих вызовов и возвращает его.
Ответ
Храните счётчик в замыкании и увеличивайте его через nonlocal при каждом вызове. Фабрика позволяет создать несколько независимых функций-счётчиков без глобального состояния.
Пример:
def make_counter():
count = 0
def counter():
nonlocal count
count += 1
return count
return counter
calls = make_counter()
print(calls()) # 1
print(calls()) # 2
Каждый новый make_counter() начинает отсчёт заново. Состояние живёт в памяти процесса и не сохраняется после перезапуска. Для одновременного вызова из нескольких потоков нужен lock вокруг изменения; для общего счётчика нескольких процессов — внешнее согласованное хранилище.