Карточка Junior Функции и области видимости спрашивают часто обновлено
Правило LEGB
Вопрос
Что такое LEGB?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Порядок поиска имени: Local (текущая функция), Enclosing (охватывающие функции), Global (модуль), Built-in (встроенные). Берётся первое найденное.
Ответ
Порядок поиска имени: Local (текущая функция), Enclosing (охватывающие функции), Global (модуль), Built-in (встроенные). Берётся первое найденное.
Разбор
Области определяются при компиляции: присваивание делает имя локальным во всей функции. Классы не создают охватывающую область для своих методов, поэтому методы не видят атрибуты класса без self. или Cls..
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Функции и области видимости»
- Что такое *args и **kwargs
- Перекрытие встроенных имён
- Как передаются аргументы в функцию Python
- Где хранятся переменные замыкания
- Вызов с *args и **kwargs: разбор сигнатуры
- Композиция функций
- Мемоизация через замыкание
- Повтор вызова с ограничением попыток