ПЕРЕ­МЕН­НЫЕ



Вспомним недавний пример: сколько лет вам исполнится через два года? Проанализируем, как мы получаем ответ на вопрос.

Самым первым делом мы вспоминаем сколько нам лет сейчас. Держа в уме число прибавляем к нему двойку и запоминаем полученный результат. И лишь потом можем результат озвучить, записать, иными словами - выразить. В процессе важно помнить три переменные - возраст, прибавляемую двойку и результат.

Точно так же работает компьютер.


ХРА­НЕ­НИЕ ЗНА­ЧЕНИЙ


Если мы ещё сильней задумаемся о том, как же мы вспомнили возраст, то придём к некому недоумению. Мы просто знаем его. Каким-то образом можем извлечь из глубин мозга эти данные с уверенностью, что извлечённое число и есть наш возраст.

Как мозг вспоминает ту или иную информацию до конца не понятно даже учёным. Существует предположение, что в данном случае задействуется ассоциативное мышление и информация каким-то образом «выдавливается» из памяти характеристиками информации. Например, когда мы "вспоминаем" возраст, характеристиками будут "я", "жизнь", "рождение", "жизненный путь", "хочу котлету".

Слова на самом деле ничего не значат. Каждая здесь написанная характеристика уникальная для каждого из нас: «жизнь» у нас разная, «рождение» - разное и, в конце концов, «я» - совершенно разные!

Если попытаемся вдуматься ещё глубже, начав специально вспоминать разные вещи - домашний адрес, номер телефона близкого человека, пароль к Steam, - удивительно, но мы не сможем понять, как это делается! Просто вспомнили - и всё!

Беда в том, что для компьютера подобный процесс просто не возможен. Устройство не может «просто вспомнить» или «просто запомнить». Ему нужно что-то другое.

И это другое называется...


ПЕ­РЕМЕН­НЫЕ


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

Если продолжить аналогию с человеческой памятью, то переменная - это та же ассоциация, которая позволяет извлечь из памяти какое-либо связанное с этой переменной значение.

Технически переменная является ссылкой на ячейку памяти. Точно такой же, как ссылки в интернете. Вы кликаете мышью на подчёркнутую фразу и попадаете на нужный сайт. В программировании вы указываете имя переменной и действие с ней: компьютер работает со значением, "запомненным" в связке с названием. В примере с ссылкой на сайт сама ссылка будет именем переменной, а содержимое требуемого сайта - значением.

Переменная - именованная область памяти для хранения значений.

Если область именована, значит, у неё есть имя. Ваш Кэп.


ИМЯ И ЗНА­ЧЕНИЕ


Каждая переменная определяется своим именем. Имя переменной называется идентификатором. Два разных значения должны храниться под двумя разными идентификаторами.

Значение (или содержимое) переменной может задаваться напрямую, или может вычисляться, то есть являться результатом какого-либо допустимого языком программирования выражения.

Python сам определяет тип переменной в тот момент, когда вы работаете с переменной, например, создаёте её.

Требования к именам переменных:

Требования к значениям переменных:

Ребёнка называют родители. Переменную называет программист.

Старайтесь давать такие имена, которые отражают суть хранимого значения. Например, хорошее имя переменной health для хранения значения "жизни" в CS:GO, а money - для хранения суммы денег на покупку оружия и брони.

Если требуется создать идентификатор, состоящий из нескольких слов, то первое слово записывается маленькими буквами, каждой последующее - с большой буквы. Например, healthOfPlayer.

Также для разделения слов в имени переменной используют знак подчёркивания: "_". Например, health_of_player. В этом случае каждое новое слово в идентификаторе записывается с маленькой буквы.

Всё вышенаписанное не мешает нам пользоваться короткими именами переменных - a, b, c, x, y. Если ваша программа небольшая - пользуйтесь односимвольными именами, так проще.


ПРИС­ВАИВА­ЕМ ЗНА­ЧЕ­НИЕ


Присвоение значения переменной выполняется с помощью оператора =. Слева от знака указывается имя переменной, справа - значение или выражение.

Сам знак называется оператором присваивания.

Пример:

health = 100 money = 16000

После выполнения двух этих строк в оперативной памяти компьютера будут хранится значения 100 и 16000, доступ к которым мы можем получить с помощью идентификаторов health и money.

Прекращение работы программы приведёт к автоматическому удалению значений из памяти. Таким образом память "очищается" и освободившееся место доступно для использования другими программами, или повторно запущенной нашей.

Для присвоения строкового значения строку нужно взять в парные кавычки.

myName = "Виктор"

Произойдёт аналогичное предыдущему действие, только вместо числа в ячейке памяти будет хранится строка с моим именем.


ВЫЧИС­ЛЯЕМ ЗНА­ЧЕНИЕ


Значения в переменных можно с лёгкостью изменять.

a = 3 b = 5 a = a + 5 b = b + a print(a + b)

Какое число возникнет на экране?

Ответ

21


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

Например, следующая программа выдаст ошибку:

b = 5 a = a + 5 b = b + a print(a + b)

Дойдя до строки a = a + 5, Python попытается "вспомнить", чему же равна переменная a. А ничему. Мы её не определили. Пытаться заставить компьютер посчитать "ничего" + 5 не очень доброе занятие.

Для избежания подобной ошибки рекомендую каждую переменную инициализировать в начале программы.

Инициализация переменной - процесс, при котором мы определяем переменную и помещаем в неё какое-нибудь значение. Чаще всего значение нулевое. Инициализация обычно происходит в первых строчках программы. Хотя требование инициализировать переменные для языка Python не обязательно, но если выработаете привычку инициализировать каждую используемую переменную - избежите проблем в будущем

Программа, вычисляющая площадь прямоугольника:

a = 30 b = 7 s = a * b print(s)

Здесь инициализация произошла в строках:

a = 30 b = 7 s = a * b

Переменная s в выражении s = a * b не проинициализирована, но это не страшно, потому что программа короткая. Инициализация происходит в момент вычисления a * b.


БЛОКИ ВВОДА, ОБРА­БОТКИ, ВЫ­ВОДА


Вы ещё не заметили, что в предыдущей программе...

a = 30 b = 7 s = a * b print(s)

...существуют все три блока: ввод, обработка и вывод? Рассмотрим их.

Блок ввода

a = 30 b = 7

Этими двумя строками мы вводим значения в программу для дальнейшей обработки. Программа получила числа, поместила их в переменные с идентификаторами a и b. То есть "запомнила" их.

Почему мы используем короткие имена переменных?

Ответ

Потому что программа очень короткая! Короткая программа - короткие имена, изи же!


Блок обработки

s = a * b

В этом месте Python пользуется ресурсами процессора и вычисляет нам значение выражения a * b. То есть программа берёт и подставляет значения, находящиеся в памяти компьютера с идентификаторами a и b.

Блок вывода

print(s)

Значения обработаны. Результат получен. Результат занесён в переменную s. Теперь мы не просто можем, но даже обязаны показать результат на экране. Если убрать строку print(s), то программа станет бессмысленной. Где-то в недрах компьютерной памяти в переменной с именем s будет находиться число 210 (30 * 7), но мы его так и не увидим.

Мы можем сократить программу до:

a = 30 b = 7 print(a * b)

...или даже до:

print(30 * 7)

...или даже до:

print(210)

Но делать этого не стоит. Почему?


КОГ­ДА НУЖНО ПОЛЬ­ЗОВАТЬ­СЯ ПЕ­РЕМЕН­НЫМИ


Всегда!

Рассмотрим недостатки предыдущих версий программ:

    print(210)

  1. Это очень плохая программа, да и программой её не назовёшь. Она статична и ничего не делает. С тем же успехом можно считать на калькуляторе и не создавать дополнительных трудностей с изучением Python.

    Мало того, - в этой программе один блок: блок вывода. Полноценная программа всегда содержит все три блока.

  2. print(30 * 7)

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

  3. a = 30 b = 7 print(a * b)

    Уже интересней. Мы совместили блок обработки с блоком вывода. Ничего зазорного в этом нет и так делать можно.

    Только если у нас программа будет продолжена и нам потребуется "знать" размер площади прямоугольника, то всегда придётся его пересчитывать с помощью a * b, лишний раз заставляя процессор считать.

    Если мы оставим s = a * b, то в последующем коде при необходимости станем использовать переменную s для доступа к полученному значению.

  4. a = 30 b = 7 s = a * b print(s)

    Практически идеал, но... Что делает наша программа? Вычисляет площадь прямоугольника! Сообщим об этом пользователю:

    a = 30 b = 7 s = a * b print("Площадь прямоугольника со сторонами", a, " и ", b, "равна", s)

Вот всё мне нравится в последней версии, кроме...

Чтобы посчитать площадь другого прямоугольника, мы должны постоянно изменять первую и вторую строки. Представьте, что ваша бабушка, к примеру, захочет вычислить площадь комнаты? Что вы сделаете? Сможете её научить базовому программированию? Было бы куда проще, если бы компьютер спрашивал данные, мы бы набирали их на клавиатуре и получали бы результат. При каждом запуске программы мы бы могли вычислять разные данные! У - универсальность!

Как раз об этом речь пойдёт в следующей главе. Не переключайтесь!


© 2019-2021 Виктор Трофимов
[ Оглавление ] [ В начало страницы ]