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

Слайд 2

🌐 Глобальные переменные и константы

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

Глобальными называются переменные, объявленные в основной программе (вне функций). Они доступны как основной программе, так и всем функциям.

birds = 5000    # глобальная переменная

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

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

print_texas()
print_california()

Результат:

В Техасе обитает 5000 птиц.
В Калифорнии обитает 5000 птиц.
💡 Глобальные переменные позволяют обмениваться данными между основной программой и функциями.

⚠️ Конфликт имён: локальная перекрывает глобальную

birds = 5000   # глобальная переменная

def print_texas():
    birds = 1000  # локальная переменная
    print('В Техасе обитает', birds, 'птиц.')

def print_california():
    birds = 7000  # локальная переменная
    print('В Калифорнии обитает', birds, 'птиц.')

print_texas()
print_california()

Результат:

В Техасе обитает 1000 птиц.
В Калифорнии обитает 7000 птиц.
⚡ Если внутри функции объявлена локальная переменная с тем же именем, что и глобальная, то глобальная становится невидимой в этой функции.

🚫 Почему глобальные переменные — зло

Большинство программистов стараются не использовать глобальные переменные. Вот почему:

  • 🧩 Они затрудняют отладку — значение может измениться в любой части программы.
  • 🔄 Функции, использующие глобальные переменные, становятся зависимыми от них и теряют универсальность.
  • 🕵️‍♂️ Глобальные переменные ухудшают читаемость — понять, где именно изменяется их значение, сложно.
✅ Лучше передавать данные через параметры функций, а не использовать глобальные переменные.

🔹 Глобальные константы

Использование глобальных констант считается допустимым. Константы — это глобальные значения, которые не должны изменяться во время работы программы.

В Python нет настоящих констант, но их можно имитировать, просто договорившись не изменять значение:

PI = 3.14159265
E = 2.71828

Пример из модуля math:

import math
print(math.pi)   # 3.141592653589793
print(math.e)    # 2.718281828459045
💡 По соглашению, имена констант в Python записывают заглавными буквами.

🔑 Ключевое слово global

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

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

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

print_texas()
print_california()

Результат:

В Техасе обитает 5000 птиц.
В Калифорнии обитает 5000 птиц.
⚠️ Используйте global только при крайней необходимости. Чаще всего лучше возвращать значения из функции с помощью return.