Области видимости LEGB
less_32__closure_decorator/theory_01__scope.md
Вводит правило LEGB (Local, Enclosing, Global, Built-in), по которому Python ищет имя переменной. На простом примере с тремя вложенными уровнями (глобальная x, x внутри outer, x внутри inner) показано, что каждый уровень видит свою собственную x, не затрагивая остальные, а поиск идёт строго изнутри наружу.
- L — Local: локальная область функции
- E — Enclosing: область внешних функций для вложенных
- G — Global: область модуля
- B — Built-in: встроенные имена (len, print, range)
- Пример: три независимых x на трёх уровнях + len(x) на глобальном уровне
Показать начало файла (55 строк всего)
## Области видимости в Python (LEGB)
Python использует правило **LEGB**, которое определяет порядок поиска переменной:
1. **L — Local**
Локальная область внутри функции или лямбда-выражения.
2. **E — Enclosing**
Область всех внешних функций (для вложенных функций).
3. **G — Global**
Область модуля (файл Python).
4. **B — Built-in**
Встроенные имена Python (например, `len`, `print`, `range`).
---
### Простой пример LEGB
```python
x = "global"
def outer():
x = "enclosing"
def inner():
x = "local"
print('x from local:', x)
inner()
print('x from outer:', x)
outer()
print('x from global:', x)
print('len(x) =', len(x))
```
Вывод:
```
x from local: local
x from outer: enclosing
x from global: global
len(x) = 6
```
### Вывод:
Python ищет `x` в порядке: **Local → Enclosing → Global → Built-in**.