
Что такое переменные и зачем они нужны
Переменные в программировании — это основа любого кода. Представьте их как ярлыки или контейнеры, которые хранят информацию. В Python переменная создаётся в момент, когда вы впервые присваиваете ей значение.
Главные преимущества переменных:
Повторное использование данных — один раз сохранили значение и используем многократно
Читаемость кода — осмысленные имена переменных делают программу понятнее
Упрощение изменений — меняем значение в одном месте, а не во всём коде
Как Python работает с переменными
Python использует систему ссылок для работы с переменными:
Переменная - это имя, ссылающееся на объект в памяти
Один объект может иметь несколько имён
Присваивание создаёт новую ссылку, а не копию объекта
Сборщик мусора удаляет объекты, на которые нет ссылок
Как создавать переменные в Python
Синтаксис создания переменных в Python прост и интуитивно понятен:
имя_переменной = значение
Примеры:
age = 25 # Возраст
name = "Алексей" # Имя
temperature = 36.6 # Температура
is_raining = False # Идёт ли дождь
Python автоматически определяет тип переменной на основе присвоенного значения. Это называется динамической типизацией.
Правила именования переменных
Допустимые символы:
Буквы (a-z, A-Z)
Цифры (0-9), но не в начале имени
Знак подчёркивания (_)
Недопустимые символы:
Специальные символы (@, #, $, % и др.)
Пробелы
Дефисы (-)
Регистр букв имеет значение:
Age
,AGE
иage
— три разные переменные.Запрещённые имена — нельзя использовать ключевые слова Python:
and, as, assert, break, class, continue, def, del, elif, else, except,
False, finally, for, from, global, if, import, in, is, lambda,
None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield
Примеры правильных и неправильных имён:
✅ Правильно:
user_age = 30
player_score = 100
MAX_SIZE = 1024
❌ Неправильно:
2players = 4 # Начинается с цифры
user-name = "Alex" # Содержит дефис
class = "10A" # Ключевое слово
Основные типы переменных
Python поддерживает несколько основных типов данных:
Числовые типы:
int
— целые числа (42, -10, 0)float
— числа с плавающей точкой (3.14, -0.001)complex
— комплексные числа (3+4j)
Строки (
str
):
message = "Привет, мир!"
Логический тип (bool
):
is_active = True
has_permission = False
Коллекции:
Списки (
list
):[1, 2, 3]
Кортежи (
tuple
):(1, 2, 3)
Множества (
set
):{1, 2, 3}
Словари (
dict
):{"name": "Alice", "age": 25}
Динамическая типизация
В Python тип переменной определяется автоматически и может изменяться:
x = 10 # x — целое число (int)
x = "десять" # теперь x — строка (str)
x = [1, 2, 3] # теперь x — список (list)
Узнать текущий тип переменной можно с помощью функции type()
:
print(type(x)) # Выведет <class 'list'>
Работа с переменными
Множественное присваивание
Python позволяет присваивать значения нескольким переменным в одной строке:
a, b, c = 1, 2, 3 # Разные значения
x = y = z = 0 # Одно значение для всех
name, age = "Мария", 30 # Комбинация разных типов
Константы
Хотя в Python нет настоящих констант, принято обозначать переменные, которые не должны изменяться, заглавными буквами:
PI = 3.14159
MAX_USERS = 100
Удаление переменных
Для освобождения памяти можно удалить переменную с помощью del
:
x = 10
del x
print(x) # Вызовет ошибку NameError
Практические примеры
Пример 1: Простые вычисления
Расчёт площади прямоугольника
length = 10
width = 5
area = length * width
print(f"Площадь: {area}") # Площадь: 50
Пример 2: Работа со строками
first_name = "Иван"
last_name = "Петров"
full_name = f"{first_name} {last_name}"
print(f"Здравствуйте, {full_name}!") # Здравствуйте, Иван Петров!
Пример 3: Обмен значений
a = 5
b = 10
a, b = b, a # Обмен значениями без временной переменной
print(a, b) # 10 5
Пример 4: Обработка пользовательских данных
# Ввод данных пользователя
user_data = {
"name": input("Введите ваше имя: "),
"age": int(input("Введите ваш возраст: ")),
"email": input("Введите ваш email: ")
}
# Форматированный вывод
print(f"""
Данные пользователя:
Имя: {user_data['name']}
Возраст: {user_data['age']}
Email: {user_data['email']}
""")
Пример 5: Работа с разными типами данных
# Создание коллекций
numbers = [1, 2, 3, 4, 5] # Список
coordinates = (50.45, 30.52) # Кортеж
unique_numbers = {1, 2, 3, 3, 4} # Множество (дубли удаляются)
person = {"name": "Anna", "age": 28} # Словарь
# Операции с коллекциями
numbers.append(6) # Добавление элемента
# coordinates[0] = 51.23 # Ошибка: кортеж неизменяем
unique_numbers.add(5) # Добавление в множество
person["city"] = "Kyiv" # Добавление в словарь
Схема хранения переменных в памяти
[ Переменная ] [ Значение в памяти ]
name -----> "Алексей" (str)
age -----> 25 (int)
scores -----> [90, 85, 95] (list)
Таблица основных типов данных
Тип данных | Пример | Изменяемость | Описание |
---|---|---|---|
|
| Нет | Целые числа |
|
| Нет | Числа с плавающей точкой |
|
| Нет | Строки текста |
|
| Нет | Логические значения |
|
| Да | Упорядоченные коллекции |
|
| Нет | Неизменяемые списки |
|
| Да | Пары ключ-значение |
|
| Да | Уникальные элементы |
Области видимости переменных
global_var = "Я глобальная"
def my_function():
local_var = "Я локальная"
print(global_var) # Доступна
print(local_var) # Доступна
my_function()
print(global_var) # Доступна
# print(local_var) # Ошибка - не доступна вне функции
Копирование vs присваивание
# Присваивание (обе переменные ссылаются на один объект)
list1 = [1, 2, 3]
list2 = list1
list2.append(4)
print(list1) # [1, 2, 3, 4] - изменилась и list1!
# Копирование (создаётся новый объект)
import copy
list1 = [1, 2, 3]
list2 = copy.deepcopy(list1)
list2.append(4)
print(list1) # [1, 2, 3] - list1 не изменилась
Аннотации типов
def greet(name: str, age: int) -> str:
return f"Привет, {name}! Тебе {age} лет."
message: str = greet("Анна", 30)
Частые ошибки начинающих
Необъявленные переменные:
print(unknown_var) # NameError
Опечатки в именах:
counter = 1
print(counetr) # Опечатка -> NameError
Использование ключевых слов:
class = "10A" # SyntaxError
Несоответствие типов:
age = "25" # Строка, а не число
print(age + 5) # TypeError
Использование неинициализированной переменной:
# if is_active: # NameError: name 'is_active' is not defined
# print("Активен")
Сравнение с другими языками
Характеристика | Python | C++ | Java | JavaScript |
---|---|---|---|---|
Типизация | Динамическая | Статическая | Статическая | Динамическая |
Объявление | Не требуется | Требуется | Требуется | Не требуется |
Изменение типа | Да | Нет | Нет | Да |
Область видимости | Функция/класс | Блок | Блок | Функция |
Советы по работе с переменными
Осмысленные имена — код должен быть читаемым:
Плохо:
a = 10
Хорошо:
user_age = 10
Змеиный регистр (snake_case) — стандарт именования в Python:
user_name = "Alex"
max_count = 100
Избегайте однобуквенных имён (кроме временных переменных в циклах)
Комментируйте неочевидные переменные:
# Таймаут в миллисекундах
timeout_ms = 5000
Упражнения для закрепления
Создайте переменные для хранения:
Вашего имени
Вашего возраста
Среднего балла за последнюю сессию
Напишите код, который вычисляет индекс массы тела (ИМТ):
weight = 70 # вес в кг
height = 1.75 # рост в метрах
# Ваш код для расчёта ИМТ (вес / рост²)
Создайте три переменные с числами и поменяйте их значения по кругу:
a → b
b → c
c → a
Блок "Попробуйте сами"
Задание: создайте переменные для расчёта НДС
price = 1000 # цена товара
vat_rate = 0.2 # ставка НДС (20%)
# Ваш код для расчёта суммы с НДС:
# total_price = ?
# После решения проверьте:
# print(f"Итоговая цена: {total_price}") # Должно быть 1200
Тестовые вопросы
Какое имя переменной НЕ допустимо в Python?
a) user_name
b) 2nd_place
c) _temp
d) MAX_SIZE
Что выведет этот код?
x = 10
y = x
y = 20
print(x)
Какой тип будет у переменной после выполнения
value = 5 / 2
?
Заключение
Это расширенное руководство охватывает все аспекты работы с переменными в Python - от базовых концепций до продвинутых тем. Практикуйтесь, экспериментируйте с примерами и следуйте лучшим практикам, чтобы писать чистый и эффективный код.