TGViewer
Python: задачки и вопросы Python: задачки и вопросы @quiz_python · 6.92K subscribers
Post #4036 1.19K
Код выведет "b" из-за принципа работы областей видимости LEGB и использования ключевого слова global:

1. Сначала определяется глобальная переменная x со значением "a":
x = "a"

2. Затем определяется функция outer_func(), которая объявляет x как глобальную переменную с помощью ключевого слова global:

def outer_func():
global x

3. Внутри outer_func() определяется вложенная функция nested_func(), которая просто выводит значение x:

def nested_func():
print(x)

4. После определения функций, значение глобальной переменной x изменяется на "b":
x = "b"

Благодаря объявлению global x внутри outer_func(), все обращения к x внутри этой функции (включая вложенные функции) будут ссылаться на глобальную переменную x. Когда nested_func() вызывается и пытается вывести x, она ищет значение x в следующем порядке (LEGB):
— L (Local): локальной переменной x нет;
— E (Enclosing): из-за global x в outer_func, пропускается;
— G (Global): находит x со значением "b";
— B (Built-in): не требуется.
  • 👍 2
  • 👎 1
More from @quiz_python
  1. Sep 26, 2026Развёрнутое пояснение: 1. При создании класса __slots__ разрешает экземплярам хранить атри…
  2. Sep 26, 2026Post #4900
  3. Sep 26, 2026Развёрнутое пояснение: 1. deque создаёт очередь из a и b с максимальной длиной 3. 2. appen…
  4. Sep 26, 2026Post #4898
  5. Sep 25, 2026Развёрнутое пояснение: 1. defaultdict(int) создаёт словарь, в котором фабрика int возвраща…
  6. Sep 25, 2026Post #4896
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →