[имя] спросил: Правильно ли, что nonlocal даёт внутренней функции доступ к переменной внешней функции?

Читать переменную внешней функции можно и без nonlocal. nonlocal нужен, чтобы присваивание во внутренней функции изменяло существующую привязку в ближайшей подходящей внешней области.

Короткий ответ

Что ответить на собеседовании

Читать переменную внешней функции можно и без nonlocal. nonlocal нужен, чтобы присваивание во внутренней функции изменяло существующую привязку в ближайшей подходящей внешней области.

Подробный разбор

Ответ с пояснениями

Читать переменную внешней функции можно и без nonlocal. nonlocal нужен, чтобы присваивание во внутренней функции изменяло существующую привязку в ближайшей подходящей внешней области.

Например, счётчик внутри замыкания с count += 1 требует nonlocal count, иначе count считается локальным и возникает UnboundLocalError при чтении. Изменение содержимого внешнего списка через append не перепривязывает имя и обычно nonlocal не требует. Объявление относится к области функции, а не к глобальному имени; для последнего существует global.

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

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

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

Подробнее