Локальные и глобальные переменные

Слайд 2

Глобальные или локальные? 1. В Python, переменные, которые используются в основном

Глобальные или локальные?

1. В Python, переменные, которые используются в основном коде,

а затем внутри функции на них только ссылаются (нет присваивания для этих переменных в теле функции), считаются глобальными по умолчанию.  Например, на момент вызова функции any(), основной код знает переменную v и функция может использовать это значение.

def any(): print(v + 1) v = 1 any() print(v)

2. Но, как только внутри функции произойдет новое присваивание
этой переменной v, она становится локальной.

def any(): v = 5 print(v + 1) v = 1 any() print(v)

 3. Если все-таки необходимо и учесть внешнее значение переменной, и при этом внутри функции присвоить новое значение, то необходимо явно указать переменную глобальной с помощью оператора global.

def any(): global v v += 5 print(v + 1) v = 1 any() print(v)

Слайд 3

Хитрая задача Почему здесь функция func знает переменную b, когда ее

Хитрая задача

Почему здесь функция func знает переменную b, когда ее вызывают?


Получаем 1010

Потому что, в теле функции идет только ссылка на переменную b и в теле функции нет присваивания нового значения b, значит она воспринимается как глобальная.

def func(a): return a**b a = 100 b = 10 print(func(b))

Если бы в теле функции переменной b присвоили новое значение, то она стала бы локальной.

def func(a): b = 2 return a**b a = 100 b = 10 print(func(b))

Получаем 102