Step 6 (S-15555)

From Stepik Wiki
Revision as of 03:55, 29 July 2017 by Valeriy Shagur (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/3372/step/6

S-15555-1.png

Переменные, которые объявлены внутри функции называются локальными. Их невозможно использовать вне функции. Например, если у нас есть функция init_values, в которой мы инициализируем значения переменных а и b, то мы можем использовать эти значения переменных только внутри функции. Снаружи функции (даже после вызова этой функции) нас значения переменных а и b считаются неизвестными. Если мы попробуем вывести значения а и b, мы увидим сообщение об ошибке.

S-15555-2.png

Рассмотрим случай, когда в нашей программе есть две переменных с одинаковым именем а, одна инициализирована вне определения функции, вторая внутри.

S-15555-3.png

Изменения, которые происходят с локальной переменной а, ни коим образом ни влияют на значение а, описанной вне функции. Фактически эти две переменные, не смотря на то, что они имеют одинаковые имена, являются разными.

S-15555-4.png

Передадим значение переменной b внутрь функции и попытаемся изменить его. Значение переменной b вновь не изменится. Получается, что мы не можем изменить значение внешней переменной из функции. На самом деле это не совсем так, если мы передадим в функцию значение изменяемого объекта, например: список, то изменение возможно.

S-15555-5.png

В этом примере мы определили функцию append_zero, которая добавляет 0 к переданному ей списку. В общем случае необходимо понимать, каким образом мы изменяем значение переменной, одно дело, если мы берем объект и как-то изменяем его, другое - если создаем новый объект и связываем его с именем переменной.

S-15555-6.png

Здесь после добавления 0 в список a, мы связали переменную xs с новым объектом [100] (список из одного элемента, равного 100) В этом случае мы увидим, что значение а - список [0]