Функция, считающая количество своих вызовов

Храните счётчик в замыкании и увеличивайте его через 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 вокруг изменения; для общего счётчика нескольких процессов — внешнее согласованное хранилище.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее