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

Python: Классификация переменных на локальные и глобальные

Статью подготовили специалисты образовательного сервиса Zaochnik.

Содержание:

В Python переменные могут делиться на локальные и глобальные в зависимости от их области видимости.

Глобальные переменные в Python

Внутри функции можно ссылаться на переменные, которые были объявлены за пределами этой функции.

Пример 1

```python

def func1():

     print(a)

a = 1 # Глобальная переменная

func1()

```

В данном примере переменной “а” присваивается значение “1”, и при выводе значения функции - программа выводит “1”, даже если выше функции переменная не инициализирована. При вызове функции значение переменной уже установлено, что позволяет выводить его на экран.

Замечание 1

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

Локальные переменные в Python

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

Пример 2

```python

def func2():

     a = 1 # Локальная переменная

func2()

print(a)

```

В этом случае мы получим сообщение об ошибке “NameError: name 'a' is not defined”.

Замечание 2

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

Локальные переменные создаются в пределах функции и доступны только внутри нее. После завершения работы функции они удаляются.

Интересный результат получится, если попытаться внести изменение в значение глобальной переменной в функции:

Пример 3

```python

def func3():

     a = 1 # Локальная переменная

     print(a)

a = 0

func3()

print(a)

```

На экран будут выведены числа “1” и “0”. То есть, хотя переменная a изменилась внутри функции, за ее пределами она осталась без изменений! Это сделано для "защиты" глобальных переменных от случайных модификаций в функции (например, если функция вызывается в цикле, и переменная используется для управления циклом, то эти переменные должны различаться). Если в функции изменяется значение переменной, именем которой также является глобальная переменная, то она становится локальной, и ее изменение не затрагивает глобальную переменную с тем же именем.

Замечание 3

Python воспринимает переменную как локальную, если внутри функции есть хотя бы одно выражение, изменяющее ее значение (это может быть оператор присваивания, например `=`, `+=`, и т.д., или употребление данной переменной в качестве параметра цикла). Переменная считается локальной и недоступна до инициализации. Даже если инструкция, модифицирующая переменную, не выполняется, Python по-прежнему считает ее локальной.

Пример 4

```python

def func4():

     print(a)

     if False:

          a = 0

a = 1

func4()

```

В результате возникнет ошибка “UnboundLocalError: local variable 'a' referenced before assignment”. В этой функции идентификатор становится локальной переменной, поскольку присутствует оператор, модифицирующий переменную a, даже если он не исполняется (интерпретатор это не может определить). Вывод переменной приводит к попытке обращения к неинициализированной локальной переменной.

Изменение значения глобальной переменной в Python

Для возможности изменить функцией значения глобальной переменной, переменную необходимо объявить глобальной с помощью ключевого слова `global`:

Пример 5

```python

def func5():

     global a

     a = 1

     print(a)

a = 0

func5()

print(a)

```

В результате такого примера на экран будет выведено “1”, по причине объявления переменной как глобальной, поэтому изменения значения переменной внутри функции также отражается за ее пределами.

Замечание 4

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

Если необходимо вернуть несколько значений, функция может вернуть кортеж:

return (a, b).

В подобном случае результат вызова функции необходимо присваивать кортежу:

(n, m) = f(a, b).

Навигация по статьям

Выполненные работы по программированию

  • Программирование

    Latex

    • Вид работы:

      Набор текста (компьютерный)

    • Выполнена:

      18 ноября 2017

    • Стоимость:

      400 руб.

    Заказать такую же работу
  • Программирование

    Lazarus

    • Вид работы:

      Решение задач

    • Выполнена:

      16 ноября 2017

    • Стоимость:

      2 800 руб.

    Заказать такую же работу
  • Программирование

    Электронный журнал посещаемости для студентов

    • Вид работы:

      Курсовая работа

    • Выполнена:

      10 ноября 2017

    • Стоимость:

      900 руб.

    Заказать такую же работу
  • Программирование

    Определить оценки внутреннего и внешнего качества при разработке приложения Блокнот

    • Вид работы:

      Контрольная работа

    • Выполнена:

      9 ноября 2017

    • Стоимость:

      4 200 руб.

    Заказать такую же работу
  • Программирование

    Контрольная работа Математические основы обработки информации

    • Вид работы:

      Контрольная работа

    • Выполнена:

      22 октября 2017

    • Стоимость:

      3 500 руб.

    Заказать такую же работу
  • Программирование

    Аналитическая справка об участии воспитанников в жизни ДОУ

    • Вид работы:

      Набор текста (компьютерный)

    • Выполнена:

      12 октября 2017

    • Стоимость:

      400 руб.

    Заказать такую же работу