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

Слайд 1

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

Переменные в Python делятся на локальные и глобальные — в зависимости от того, где они объявлены и где могут использоваться.

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

Локальные переменные — это переменные, созданные внутри функции. Они доступны только внутри этой функции и не видны вне её.

def print_texas():
    birds = 5000
    print('В Техасе обитает', birds, 'птиц.')

Здесь переменная birds создаётся внутри функции print_texas(), и доступна только внутри неё.

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

⚠️ Ошибка доступа к локальной переменной другой функции

def print_texas():
    birds = 5000
    print('В Техасе обитает', birds, 'птиц.')

def print_california():
    print('В Калифорнии обитает', birds, 'птиц.')

print_california()

Результат:

NameError: name 'birds' is not defined

Локальная переменная birds функции print_texas() не видна в функции print_california().

📦 Одинаковые имена локальных переменных в разных функциях

def print_texas():
    birds = 5000
    print('В Техасе обитает', birds, 'птиц.')

def print_california():
    birds = 9000
    print('В Калифорнии обитает', birds, 'птиц.')

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

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

🎯 Область видимости переменной

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

def print_texas():
    print('В Техасе обитает', birds, 'птиц.')
    birds = 5000

При вызове такой функции возникнет ошибка:

UnboundLocalError: local variable 'birds' referenced before assignment

Ошибка возникает потому, что попытка обращения к birds происходит до того, как она была создана.

🧩 Область видимости параметрической переменной

def draw_box(height, width):
    for i in range(height):
        print('*' * width)

Здесь параметры height и width — это параметрические переменные, и их область видимости — тело функции draw_box().

💡 Параметрическая переменная — это тоже локальная переменная, видимая только внутри функции, в которой она используется.

🧠 Как работает память

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

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