Переменные: как давать имена данным и сохранять их в памяти
Переменные: как давать имена данным и сохранять их в памяти
В прошлом курсе мы написали скрипт, который рассчитывал чистую прибыль от продажи подписок. Код выглядел так: print((50 * 1200) - 15000).
Пока формула состоит из трех чисел, всё понятно. Но представьте, что вам нужно использовать показатель выручки (50 * 1200) в пяти разных отчетах внутри одного скрипта. А завтра цена подписки изменится с 1200 руб. на 1500 руб. Вам придется вручную искать и исправлять это число по всему коду. Это долго, и в реальной аналитике, где строк кода тысячи, ошибка неизбежна.
Чтобы не работать с «голыми» числами, программисты используют переменные.
Что такое переменная
Переменная — это именованная область в памяти компьютера. Представьте себе пустую коробку. Вы кладете в нее число, закрываете и наклеиваете стикер с понятным названием (например, «цена»). Теперь, когда вам понадобится это число, вы не вспоминаете его наизусть, а просто обращаетесь к коробке по имени на стикере.
В Python создание переменной и сохранение в нее данных называется присваиванием. Для этого используется знак равенства =.
price = 1200
users = 50
expenses = 15000
Теперь интерпретатор запомнил: если в коде встречается слово price, вместо него нужно подставить число 1200. Мы можем переписать наш расчет прибыли так, чтобы он стал читаемым:
revenue = users * price
profit = revenue - expenses
print(profit)
Если цена изменится, нам нужно будет обновить число ровно в одном месте — там, где мы создали переменную price. Все остальные формулы пересчитаются автоматически.
Анатомия оператора присваивания
Главная ошибка начинающих — воспринимать знак = в коде как математическое равенство. В математике запись означает факт: «икс равен пяти».
В программировании = — это команда к действию. Она читается не слева направо, а справа налево.
Когда интерпретатор видит строку revenue = 50 * 1200, он выполняет два шага в строгой последовательности:
- Сначала он смотрит только на правую часть от знака
=. Он выполняет все математические вычисления там (50 * 1200) и получает итоговый результат (60000). - Затем он смотрит на левую часть. Он берет полученный результат и кладет его в «коробку» с именем
revenue.
Знак
=в Python означает: «вычисли то, что справа, и сохрани под именем, которое слева».
Как правильно называть переменные
Интерпретатору всё равно, как вы назовете коробку с данными. Код a = 50 * 1200 сработает так же безупречно, как и revenue = 50 * 1200. Но код чаще читают люди, чем машины.
В мире Python существует стандарт оформления кода (PEP 8), который диктует правила именования.
Жесткие правила (если их нарушить, скрипт упадет с синтаксической ошибкой):
- Имя может состоять только из латинских букв, цифр и символа подчеркивания
_. - Имя не может начинаться с цифры (
1user— нельзя,user1— можно). - Нельзя использовать пробелы (
my price— ошибка, нужноmy_price).
Правила хорошего тона (стиль snake_case):
В Python принято писать имена переменных строчными (маленькими) буквами, а если имя состоит из нескольких слов, разделять их подчеркиванием. Этот стиль называется snake_case (змеиный регистр), потому что подчеркивания делают текст похожим на ползущую змею.
| Плохо | Хорошо | Почему хорошо |
|---|---|---|
x = 1200 |
price = 1200 |
Понятно, что именно хранит переменная. |
UserCount = 50 |
user_count = 50 |
Соблюден стандарт snake_case (только строчные буквы и подчеркивания). |
prc_sbscr = 1200 |
subscription_price = 1200 |
Нет излишних сокращений, слово читается легко. |
Обновление значений в памяти
Переменная называется переменной именно потому, что ее содержимое можно менять в процессе выполнения скрипта. Интерпретатор читает код сверху вниз. Если вы присвоите уже существующей переменной новое значение, старое будет стерто из памяти навсегда.
price = 1200
print(price) # Выведет 1200
price = 1500
print(price) # Выведет 1500 (старое значение забыто)
Поскольку мы помним, что оператор = сначала вычисляет правую часть, а потом сохраняет в левую, мы можем использовать текущее значение переменной для ее же обновления.
Допустим, у нас появился один новый пользователь. Как увеличить users на единицу?
users = 50
users = users + 1
С точки зрения математики уравнение не имеет смысла. Но для Python это логичная команда:
- Смотрим направо:
users + 1. Текущее значениеusersравно 50. Значит,50 + 1 = 51. - Смотрим налево: берем результат (51) и кладем его обратно в коробку
users. Старое значение (50) стирается.
Мы научились сохранять числовые данные в памяти и давать им понятные имена. Но данные бывают разными. Цена — это целое число. А вот конверсия в покупку может быть равна 2.5%, а имя клиента — это вообще текст. В следующей главе мы разберем, как Python отличает целые числа от дробных и какие возможности это открывает для анализа данных.