Получатся 1, 1, 2. Каждый вызов make_counter создаёт собственное окружение и независимый count.
Независимы ли счётчики двух замыканий Python
Получатся 1, 1, 2. Каждый вызов make_counter создаёт собственное окружение и независимый count.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Функция make_counter создаёт count=0 и возвращает функцию, которая через nonlocal увеличивает count. Созданы a=make_counter() и b=make_counter(), затем вызваны a(), b(), a(). Какие результаты?
Ответ
Получатся 1, 1, 2. Каждый вызов make_counter создаёт собственное окружение и независимый count.
Если вместо второго вызова написать b = a, обе переменные будут ссылаться на одну функцию и один счётчик; последовательные результаты станут 1,2,3. Nonlocal обращается к переменной внешней функции, а не создаёт глобальный счётчик. Такое состояние требует отдельной синхронизации при конкурентном использовании.