Что происходит с байт-кодом при использовании ключевых слов global и nonlocal?

global и nonlocal влияют на разрешение имён при компиляции функции. В CPython обращения получают инструкции для глобальных имён или ячеек замыкания вместо обычных локальных переменных.

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

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

global и nonlocal влияют на разрешение имён при компиляции функции. В CPython обращения получают инструкции для глобальных имён или ячеек замыкания вместо обычных локальных переменных.

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

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

global и nonlocal влияют на разрешение имён при компиляции функции. В CPython обращения получают инструкции для глобальных имён или ячеек замыкания вместо обычных локальных переменных.

global связывает присваивание с пространством имён модуля; типичны LOAD_GLOBAL и STORE_GLOBAL. nonlocal обращается к существующему имени внешней функции через LOAD_DEREF и STORE_DEREF. Само объявление не выполняет поиск при каждом запуске отдельной инструкцией. Конкретный байт-код зависит от версии CPython и виден через dis; это не универсальный контракт всех реализаций Python.

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

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

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

Подробнее