Область видимости

Обновлено: 2024-03-12
2 мин

Содержание

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

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

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

Пример:

x = 10  # глобальная переменная

def my_func():
    x = 5  # локальная переменная
    print("Значение x внутри функции:", x)

my_func()
print("Значение x вне функции:", x)

Вывод:

Значение x внутри функции: 5
Значение x вне функции: 10

В этом примере мы создали глобальную переменную x со значением 10, а затем определили функцию my_func(), в которой мы создали локальную переменную x со значением 5. Внутри функции мы выводим значение локальной переменной x, а затем вызываем функцию и выводим значение глобальной переменной x.

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

x = 10  # глобальная переменная

def my_func():
    x = x + 5  # ошибка: переменная x не определена
    print("Значение x внутри функции:", x)

my_func()
print("Значение x вне функции:", x)

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

Чтобы изменить значение глобальной переменной, нужно использовать оператор global.

x = 10  # глобальная переменная

def my_func():
    global x
    x = x + 5
    print("Значение x внутри функции:", x)

my_func()
print("Значение x вне функции:", x)

В этом примере мы используем оператор global для того, чтобы указать, что мы хотим использовать глобальную переменную x.

Ранее Функции
Далее Классы