Область видимости переменных в Python

FavoriteLoadingДобавить в избранное

Область видимости (или scope) - это контекст, в котором переменная может быть доступна для использования. В Python существует два основных типа контекста: глобальный и локальный. Понимание этих контекстов является важным аспектом программирования, так как область видимости влияет на то, где и как можно использовать переменные в программе.

Глобальная область видимости

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

name = "Кира"

def say_hi():
    print("Привет", name)

def say_bye():
    print("Пока", name)

say_hi()
say_bye()

Здесь переменная name объявлена вне функций, что делает её глобальной. Обе функции say_hi() и say_bye() могут свободно использовать эту переменную, так как она доступна во всей программе.

Локальная область видимости

Локальная область видимости применяется к переменным, которые определены внутри функции. Такие переменные доступны только внутри этой функции и недоступны за её пределами.
Пример:

def say_hi():
    name = "Егор"
    surname = "Титов"
    print("Привет ", name, surname)

def say_bye():
    name = "Артём"
    print("Пока", name)

say_hi()
say_bye()

Здесь переменные name и surname являются локальными и существуют только в пределах своих функций. Несмотря на то, что обе функции содержат переменные с именем name, они не пересекаются, так как каждая из них имеет свою собственную область видимости.

Скрытие переменных

В Python возможно скрытие глобальных переменных локальными. Это происходит, когда внутри функции создаётся локальная переменная с тем же именем, что и глобальная. В этом случае глобальная переменная становится невидимой для этой функции.
Пример:

name = "Кира"

def say_hi():
    name = "Вика"  # скрываем глобальную переменную
    print("Привет", name)

def say_bye():
    print("Пока", name)

say_hi()  # Привет Вика
say_bye()   # Пока Кира

Здесь в функции say_hi() локальная переменная name скрывает глобальную переменную с тем же именем, поэтому внутри этой функции используется именно локальная версия.

Использование global для изменения глобальной переменной

Иногда требуется не создать локальную переменную с тем же именем, а изменить значение глобальной переменной. Для этого в Python используется ключевое слово global.
Пример:

name = "Кира"

def say_hi():
    global name
    name = "Вика"  # изменяем значение глобальной переменной
    print("Привет", name)

def say_bye():
    print("Пока", name)

say_hi()  # Привет Вика
say_bye()   # Пока Вика

Здесь благодаря ключевому слову global, функция say_hi() изменяет глобальную переменную name, и изменение сохраняется даже после завершения работы функции.

Использование nonlocal для доступа к переменным внешних функций

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

def outer():
    n = 5

    def inner():
        nonlocal n  # ссылаемся на переменную из внешней функции
        n = 25
        print(n)

    inner()  # 25
    print(n)  # 25

outer()

В этом примере функция inner() изменяет переменную n, которая была объявлена в функции outer(), благодаря использованию ключевого слова nonlocal. Без него создавалась бы новая локальная переменная.

Заключение

Область видимости переменных в Python играет важную роль в управлении доступом к данным. Глобальные переменные доступны во всей программе, тогда как локальные переменные ограничены функциями, в которых они определены. Использование ключевых слов global и nonlocal позволяет управлять переменными в различных контекстах, изменяя глобальные переменные или переменные внешних функций.

Написать Администратору

Вы можете написать Администратору сайта.

отправить