Читать книгу Быстрый Python. автоматизация рутинных задач за неделю - - Страница 3

Часть 1. Основы Python для автоматизации
Переменные и типы данных

Оглавление

Вспомните, как вы делаете покупки в магазине. У вас в руках корзина, в которую вы кладете разные предметы. Вы можете назвать эту корзину как угодно – «еда», «хозтовары» или даже «мои_покупки_на_вечер». Самое главное, что в корзину можно положить яблоко, пачку молока или упаковку батареек. Корзина – это переменная, а то, что вы в нее кладете – это данные. Python работает очень похоже.

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

Коробка_с_числом = 42 Надпись_на_двери = “Вход воспрещен” Флаг_включения = True

Вы только что создали три переменные и положили в них три принципиально разных типа данных. И это ключевой момент – данные бывают разные, и Python это прекрасно понимает. Цифра 42 – это целое число, или, как говорят программисты, целочисленный тип – integer (сокращенно int). Текст в кавычках “Вход воспрещен” – это строка, или string (str). А слово True (имеющее пару – False) – это булевый тип, или boolean (bool), который может быть только либо истиной, либо ложью. Компьютер по-разному обрабатывает эти типы: с числами можно производить арифметические действия, строки можно склеивать или резать на части, а булевы значения помогают принимать решения.

Коробки с разными отделениями

Давайте присмотримся к этим типам поближе. С числами все более-менее понятно: 10, -5, 0, 100500. Python отлично справляется и с дробными числами, которые называются числами с плавающей точкой – float. Например, температура 36.6, курс доллара 75.43 или математическое число Пи 3.14159 – все это float. Главное отличие от целых чисел – наличие точки, разделяющей целую и дробную часть.

Строки – это все, что заключено в кавычки. Кавычки могут быть одинарными или двойными, главное, чтобы они совпадали в начале и в конце. Это ваш универсальный инструмент для работы с текстом: названия файлов, пути к папкам, содержимое писем, данные из веб-страниц. Вы будете использовать строки постоянно, и одно из первых заданий по автоматизации почти наверняка будет связано с обработкой текста.

А теперь представьте, что вам нужно сохранить не одно значение, а целый список покупок. Для этого в Python есть специальный тип данных – список (list). Создается он с помощью квадратных скобок, а элементы в нем разделяются запятыми. Список покупок = [“молоко”, “хлеб”, “яйца”, “сыр”]. В списке могут храниться элементы любых типов, даже другие списки. Список – это ваша рабочая лошадка, упорядоченная корзина, где каждый предмет лежит на своей позиции, и вы можете обратиться к нему по номеру.

Есть и другие, более специфические коробки – словари (dict), которые хранят данные в виде пар “ключ-значение” (как записная книжка с именами и телефонами), или кортежи (tuple) – неизменяемые списки. Но для старта нам вполне хватит чисел, строк, булевых значений и списков.

Как Python понимает, что в корзине

Одна из классных особенностей Python – это динамическая типизация. Это умное словосочетание означает простую вещь: вам не нужно заранее объявлять, какого типа данные вы собираетесь хранить в переменной. Вы просто кладете туда значение, а Python смотрит на него и сам понимает: “Ага, это число”, или “Так, это текст в кавычках, значит строка”. Более того, вы можете положить в одну и ту же переменную сначала число, потом строку, и Python не будет возражать. Хотя так делать не рекомендуется, чтобы не запутаться самому.

Но иногда вам нужно быть уверенным, с чем именно вы работаете. Для этого есть функция type(). Просто передайте ей вашу переменную, и она вам честно скажет, что внутри.

Вот вы написали: моя_переменная = 100. А потом спросили: print(type(моя_переменная)). И Python ответит вам: <class ‘int’>. Это значит, что внутри лежит целое число. Если бы там была строка, ответ был бы <class ‘str’>. Эта функция – ваш диагностический инструмент, когда что-то идет не так и вы не понимаете, почему скрипт не хочет складывать два “числа”, которые на самом деле являются текстом.

Превращения и волшебство

Жизнь была бы слишком простой, если бы типы данных всегда оставались сами собой. Часто их нужно преобразовывать. Допустим, вы получили от пользователя ввод, и это всегда строка. Даже если пользователь ввел цифру 10, для Python это текст “10”. И если вы попробуете прибавить к этому тексту число 5, вы получите ошибку. Нужно превратить строку в число. Для этого существуют функции-преобразователи: int(), float(), str().

Строка_с_числом = “10” Настоящее_число = int(Строка_с_числом) Результат = Настоящее_число + 5 # Получится 15

Или обратная ситуация: вам нужно вставить значение числа в готовое текстовое сообщение. Тогда вы преобразуете число в строку с помощью str() и спокойно склеиваете его с другим текстом. Эти преобразования будут встречаться вам на каждом шагу, особенно когда вы начнете читать данные из файлов или из интернета – оттуда почти всё приходит в виде текста.

Подумайте на минуту о вашей ежедневной работе за компьютером. Какие данные проходят через ваши руки? Наверняка это имена файлов (строки), размеры этих файлов (числа), даты их изменения (часто строка, которую потом нужно превратить в специальный тип для дат), списки задач или писем. Все эти сущности в программе будут представлены разными типами данных. Понимание, чем число отличается от строки, а строка от списка – это фундамент, на котором вы построите все свои скрипты. Без этого знания вы не сможете заставить компьютер правильно сложить два числа из разных отчетов или найти нужное слово в тысяче текстовых файлов.

Теперь, когда вы знаете про основные коробки для данных, можно переходить к следующему шагу – к действиям, которые мы можем совершать с содержимым этих корзин. Как из двух чисел получить третье, как из двух строк сделать одну или как вытащить нужный элемент из длинного списка. Но это уже тема для следующего разговора. А пока поэкспериментируйте в интерпретаторе: создавайте переменные с разными именами, кладите в них разные значения, проверяйте их типы и пробуйте преобразовывать. Помните, что лучший способ понять – это сделать самому.

Быстрый Python. автоматизация рутинных задач за неделю

Подняться наверх