Что такое переменная

sample text

Допустим, вы воспользовались методом строки и получили новую строку:

print("Ваня любит яблоки".replace("Ваня", "Алёша"))
# Этот код выведет «Алёша любит яблоки»

Разберём как Python будет исполнять этот код. Он будет разбирать код как бы «изнутри»: сначала он увидит строку "Ваня любит яблоки". Затем он увидит .replace(). Методы применяются сразу же, поэтому он тут же заменит Ваня на Алёша. Появится новая строка: Алёша любит яблоки. Он подставит её вместо всего выражения:

print("Алёша любит яблоки")

Далее эта строка попадёт в print(), и он её выведет на экран.

Переменные — это способ выдернуть строку Алёша любит яблоки из всего этого процесса и сохранить её в памяти компьютера:

my_variable = "Ваня любит яблоки".replace("Ваня", "Алёша")
print(my_variable)
# Этот код тоже выведет «Алёша любит яблоки»

("my variable" — это "моя переменная" на английском)

Давайте разберём как Python прочитает этот код. Он снова первым делом увидит строку Ваня любит яблоки. И снова сразу выполнит метод, прикреплённый к ней. Слово Ваня заменится на Алёша. Но теперь новая строка попадёт не в print(), а окажется после знака равно:

my_variable = "Алёша любит яблоки"
print(my_variable)

Теперь перед ним строчка my_variable = "Алёша любит яблоки". Тут как в школьной математике, где мы писали x = 7. Мы просто называем строку "Алёша любит яблоки" именем: my_variable. Теперь она так называется. Если мы хотим вывести её на экран, мы можем написать так:

print("Алёша любит яблоки")

А можем так:

print(my_variable)

Зачем они нужны

Переменные удобны, когда одно значение используется многократно:

unit_cost = 20

print('Цена штуки', unit_cost)
print('Цена десятка', 10 * unit_cost)
print('Цена дюжины', 12 * unit_cost)

Или когда нужно выполнить много действий подряд. Когда мы делаем всё сразу в одной строчке, становится немного непонятно:

print("Сказка о том, как %зверь% съел %еда%. Жил был %зверь% в своей %дом% и ел %еда%. Конец.".replace("%зверь%","кролик").replace("%дом%", "норке").replace("%еда%", "морковку"))

Этот код выводит:

Сказка о том, как кролик съел морковку. Жил был кролик в своей норке и ел морковку. Конец.

Переменные позволяют разделить код на несколько строк:

sample = "Сказка о том, как %зверь% съел %еда%. Жил был %зверь% в своей %дом% и ел %еда%. Конец."
sample = sample.replace("%зверь%","кролик")
sample = sample.replace("%дом%", "норке")
sample = sample.replace("%еда%", "морковку")

Теперь на каждой строке происходит одно действие: мы записали строку в переменную, затем заменили название зверя, затем его дом, затем название еды, которую он ел. Такой код читать проще.

Немного подробнее о том, как они работают

Так же, как в математике, x = 7 — это не навсегда. Можно повесить название my_variable на новую штуку:

my_variable = "Алёша любит яблоки"
my_variable = "Новый текст"
print(my_variable)

Выведется "Новый текст". Сначала мы назвали строку "Алёша любит яблоки" переменной my_variable. А потом сказали, что теперь так назвается строка "Новый текст". Когда мы попросили Python вывести my_variable, он вывел "Новый текст".

Итак, одна переменная ссылается только на один объект. Можно-ли один объект называть несколькими переменными? Сразу проверим на практике:

variable_1 = "Мой текст"
variable_2 = "Мой текст"
print(variable_1)
print(variable_2)

Выведется "Мой текст" дважды. Значит, можно.

Правила создания переменных

Переменные создаются так: название_переменной = значение ( название, равно, значение).

Как выбрать название:

  • На английском.
  • Маленькими буквами, вместо пробела — нижнее подчёркивание.
  • Не может начинаться с цифры.
  • Не может содержать пробелов или сециальных символов:!@#$%^&*(){}[],./"'.
  • Было бы круто называть их так, чтобы по названию было понятно что в ней лежит. Например, если вы хотите отправить письмо, то так переменную и назовите: letter (англ. «письмо»).
  • Переменная — не строка кавычки ставить вокруг названия не нужно.

Что может быть значением, для которого создаётся переменная? На самом деле, почти всё, что есть в Python: строки, числа, функции...

Узнать больше: