← Вернуться к карте тем
Alterna · глава 38 · страница 38.2

Локальные переменные и стек вызовов

Каждый вызов получает отдельный кадр стека со своими параметрами и локальными переменными. После return кадр удаляется.

Каждый вызов получает отдельный кадр стека со своими параметрами и локальными переменными. После return кадр удаляется.

суть и практика11 классЕГЭ №16
01

Как это устроено

Каждый вызов функции получает собственный кадр стека: параметры и локальные переменные существуют до return, затем кадр исчезает.

Локальное имя. Создаётся внутри конкретного вызова и не видно после return.

Глобальное имя. Находится на уровне модуля; его чтение допустимо, изменение требует global.

Передача. Python передаёт объектную ссылку по присваиванию: функция получает новое локальное имя того же объекта.

Стек. Последний начатый вызов завершится первым.

02

Один пример в исполнении

Запусти короткую программу и переходи по строкам. Визуализатор показывает только код, текущую строку, переменные и вывод.

Если внутри функции есть присваивание x = ..., Python считает x локальным во всей функции. Попытка сначала прочитать глобальный x, а затем присвоить локальный вызовет UnboundLocalError. Оператор global нужен редко: предпочитай параметры и return. Изменение переданного списка видно снаружи, потому что оба имени ссылаются на один список; переприсваивание локального имени — нет.

Карта алгоритмаЧитай слева направо, затем запускай код.
  1. 1Начало
  2. 2Передать x в функцию
  3. 3Создать локальный value
  4. 4Вернуть новое значение
  5. 5Вывести x и y
03

Запомнить

Синтаксис этой страницы
local variable

Имя, присвоенное в теле функции, принадлежит кадру этого вызова.

global name

Имя уровня модуля; global name разрешает присваивание ему из функции.

global x

Объявляет, что x внутри функции — глобальное имя; используй только при явной необходимости.

list.append

Меняет сам объект списка, поэтому эффект виден всем именам на этот список.

return

Закрывает кадр и передаёт значение вызывающему.

print

Позволяет сравнить глобальное и возвращённое значение.