local variableИмя, присвоенное в теле функции, принадлежит кадру этого вызова.
Каждый вызов получает отдельный кадр стека со своими параметрами и локальными переменными. После return кадр удаляется.
Каждый вызов получает отдельный кадр стека со своими параметрами и локальными переменными. После return кадр удаляется.
Каждый вызов функции получает собственный кадр стека: параметры и локальные переменные существуют до return, затем кадр исчезает.
Локальное имя. Создаётся внутри конкретного вызова и не видно после return.
Глобальное имя. Находится на уровне модуля; его чтение допустимо, изменение требует global.
Передача. Python передаёт объектную ссылку по присваиванию: функция получает новое локальное имя того же объекта.
Стек. Последний начатый вызов завершится первым.
Запусти короткую программу и переходи по строкам. Визуализатор показывает только код, текущую строку, переменные и вывод.
Если внутри функции есть присваивание x = ..., Python считает x локальным во всей функции. Попытка сначала прочитать глобальный x, а затем присвоить локальный вызовет UnboundLocalError. Оператор global нужен редко: предпочитай параметры и return. Изменение переданного списка видно снаружи, потому что оба имени ссылаются на один список; переприсваивание локального имени — нет.
local variableИмя, присвоенное в теле функции, принадлежит кадру этого вызова.
global nameИмя уровня модуля; global name разрешает присваивание ему из функции.
global xОбъявляет, что x внутри функции — глобальное имя; используй только при явной необходимости.
list.appendМеняет сам объект списка, поэтому эффект виден всем именам на этот список.
returnЗакрывает кадр и передаёт значение вызывающему.
printПозволяет сравнить глобальное и возвращённое значение.