Новости
17.09.2024
«Поговорим на Python. Разработка ПО для начинающих»
Программирование — это приключение, полное трудностей, нового опыта, побед и поражений. В книге “Поговорим на Python” вы присоединитесь к Эрику и Саймону, которые учатся программировать на Python и создают свое первое приложение. Книга написана специально для будущих программистов и идеальна, чтобы начать осваивать навык, который останется на всю жизнь!
Книга “Поговорим на Python” учит писать код, задавать вопросы, делать ошибки и пробовать разные решения — прямо как в жизни. Вы шаг за шагом будете создавать приложение для небольшой кофейни, начиная с онлайн-меню и заканчивая хранением заказов в базе данных. Уникальные практические задания приведут вас туда, куда не добираются другие книги для начинающих.
Преимущества:
- Книга учит писать код, задавать вопросы, делать ошибки и пробовать разные решения — все прямо как в жизни.
- Вы будете создавать приложение для небольшой кофейни, начиная с онлайн-меню и заканчивая хранением заказов в базе данных.
- Вы получите и отработаете на практике такие важные навыки, как планирование структуры приложения, поиск ошибок и управление ожиданиями пользователей.
- Вы сможете придать своему веб-приложению профессиональный вид.
Отрывок из книги
Работа с JSON: сохранение заказа
— Вчера ты сказал что-то про Джейсона, — сказал Эрик. — Но оказалось, что это не тот Джейсон, который ходит со мной на математику.
— Да, это другой Джейсон, — улыбнулся Саймон. — Это JSON, J-S-O-N — формат файла, в котором мы сохраним данные.
— Как файлы, в которых мы сохраняли меню?
— Да, вроде того, — ответил Саймон. — Формат JSON хорошо подходит для хранения структурированных данных.
— Что это? — спросил Эрик.
— Иногда нам нужно сохранить небольшой текст или картинку. У таких данных нет строгой структуры. Текст — это просто текст. А картинка может быть большой или маленькой, черно-белой или цветной, но у нее нет никакой структуры — это просто набор пикселей. Поэтому такие данные называются неструктурированными. В твоем случае у каждого заказа есть структура: имя клиента и все компоненты напитка, который ты собираешься для него приготовить, — только это и ничего более. В заказе всегда есть основной напиток, вкус и топпинг. Ты так написал программу меню: заказ сохраняется или выводится на экран только после того, как клиент ответит на все вопросы. К тому же клиент ничего не может добавить в заказ.
— Например, еще один топпинг? — спросил Эрик.
— Именно, — сказал Саймон. — Твой заказ — это пример структурированных данных.
Эрик и не догадывался, что он придумал что-то с таким серьезным названием.
— Твой заказ хранится в словаре, — продолжил Саймон, — и ты точно знаешь, что в каждом заказе есть ключи name, drink, flavor и topping (помнишь, что это такое?), — Саймон достал одну из своих схем.
— Формат JSON придумали, чтобы хранить структурированные данные. Давай немного потренируемся с ним. Создадим отдельную программу и попробуем несколько простых операций, как мы делали раньше. Затем используем полученные знания в основной программе и научимся сохранять заказы в файл. Для одного дня это большая задача, так что, может быть, оставим что-то на завтра. Открой редактор, создай новый файл и сохрани его, например, с именем dict_json.py.
Эрик открыл редактор и нажал кнопку New. Потом он нажал Save, ввел имя файла dict_json.py и снова нажал Save. Эта процедура была ему уже знакома.
— Теперь, — сказал Саймон, — создай тестовый заказ.
— Что за тестовый заказ?
— Заказ — это словарь, — начал объяснять Саймон. — В основной программе ты создавал пустой заказ, а потом заполнял его значениями, полученными от клиента. Теперь мы пропустим этот шаг и представим, что словарь order уже заполнен ответами клиента. Давай покажу, — сказал Саймон и напечатал в редакторе:
order = {
"name": "Эрик",
— Можешь продолжить, — сказал Саймон. — Не забудь закрыть фигурные скобки.
Эрик дописал словарь order и закрыл скобку. Словарь стал выглядеть так:
order = {
"name": "Эрик",
"drink": "кофе",
"flavor": "карамель",
"topping": "шоколад"
}
— Вижу, ты сдвинул вправо строки словаря, — сказал Эрик брату. — В словарях это обязательно?
— Нет, — ответил Саймон. — Сейчас я так сделал, только чтобы лучше смотрелось. И читалось. Я могу написать все в одну строку или без отступов, но мне кажется, что так выглядит лучше. Теперь у нас есть словарь. И мы хотим сохранить его в файл. Наверное, стоит вспомнить об операциях с файлами и словарями.
— Да, — сказал Эрик. — Я проходил это так давно. И почти ничего не помню.
— Конечно, — сказал Саймон. — А еще я расскажу тебе кое-что новое о файлах. Сначала мы открываем файл. Для этого мы, естественно, должны вызвать функцию open() и передать ей имя файла в качестве аргумента. Ты же помнишь, что такое функции и аргументы? Функция open() возвращает дескриптор файла. Это специальный объект, с помощью которого программа будет работать с файлом.
Саймон написал еще одну строку после словаря Эрика:
order = {
"name": "Эрик",
"drink": "кофе",
"flavor": "карамель",
"topping": "шоколад"
}
f = open("orders.json", "w")
— Вот первое, что я хотел сказать о файлах: видишь w в последней строке? Это значит, что мы открываем файл для записи.
— Когда мы открывали файлы с меню, мы не писали никакие буквы, — напомнил Эрик.
— Ты прав! — сказал Саймон. — Мы не писали буквы — кстати, они называются режимы (modes), — потому что, когда мы не указываем никакие буквы, Python открывает файлы только для чтения. Теперь нам нужно записать данные в файл, так что мы должны предупредить об этом Python.
— Почему ты назвал файл orders.json? Ты хочешь использовать формат JSON, о котором ты говорил?
— Совершенно верно, — ответил Саймон. — Это не обязательно, но есть негласное правило добавлять расширение .json к файлам JSON. Еще одно отличие режима записи в том, что если файл с таким именем не существует, то Python создаст его.
— Что дальше? — спросил Эрик. — Как записать что-то в этот файл JSON? В последний раз мы использовали «методы» — они ведь так назывались?
— Да, ты правильно вспомнил, — сказал Саймон. — Но в этот раз мы сделаем по-другому. Нам надо записать структурированные данные, а не простой текст, поэтому мы используем модуль Python, который называется json.
— А что такое модуль? — тут же спросил Эрик.
— Сейчас объясню, — сказал Саймон и улыбнулся. — Вспомни, недавно ты написал несколько функций на Python. Например, ту, которая считывает пункты меню из файла и возвращает их в виде списка. Представь, что кто-то из твоих друзей захотел написать свою программу для кофейни или чего-то еще.
— Представил, — сказал Эрик. — Я недавно говорил с Эмили, и она сказала, что хочет написать программу для кафе-мороженого.
— Отлично! — сказал Саймон. — Ты, наверное, захочешь ей помочь и поделиться функциями, которые ты написал. Это сэкономит ей время, и ее программа будет готова быстрее. Программисты часто делятся своими разработками, чтобы помочь друг другу. В Python функции, которыми ты хочешь поделиться, можно сгруппировать в файл и передать его Эмили. Она скопирует файл на свой компьютер и импортирует его в свою программу. После импорта она сможет вызывать твои функции в своем приложении. Файл с функциями называется модулем.
— А что, если я не хочу делиться своими функциями? — спросил Эрик. — Я потратил на них столько времени!
— Да, ты правда потратил много времени, — сказал Саймон. — И проделал большую работу. Но помни: другие люди тоже потратили время, чтобы написать функции Python и даже сам Python. Они поделились своей работой с другими программистами, и теперь ты можешь пользоваться Python и его функциями абсолютно бесплатно. Так мы помогаем друг другу разрабатывать новые проекты. Было бы намного медленнее, если бы нам с тобой пришлось писать весь код с нуля. Поэтому люди используют чужой код и делятся своим кодом с другими. Это называется сообществом разработчиков программ с открытым исходным кодом (open source community).
Вернемся к JSON. Будем использовать модуль json, который написали другие программисты. Этот модуль может читать словари Python и преобразовывать их в файлы JSON. Вернись к началу файла и добавь строку: import json. Это должна быть самая первая строка в файле.
Эрик так и сделал. Вот его обновленный файл:
import json
order = {
"name": "Эрик",
"drink": "кофе",
"flavor": "карамель",
"topping": "шоколад"
}
f = open("orders.json", "w")
— Теперь нужно привести твой тестовый заказ к формату JSON и записать его в файл, который мы только что открыли, — сказал Саймон. — В модуле json есть функция dump. Но прежде чем вызвать ее, мы должны сказать Python, что эта функция находится в модуле json, поэтому вызов функции будет выглядеть так: json.dump(). Тебе нужно передать в нее два аргумента: словарь и объект файла. Добавь эту функцию в конец файла и передай ей словарь order и объект файла f.
Эрик добавил строку в конец программы:
json.dump(order, f)
Саймон продолжил:
— Есть еще кое-что, чего мы еще не делали с файлами. Мы должны закрыть файл. Это важно, поэтому давай посмотрим еще на одну схему.
Вот три главные части компьютера: процессор, память (более правильно называть ее «оперативная память») и диск (более точно — «долговременная, или «постоянная», или «внешняя» память). Программа на Python запускается в процессоре. Файл хранится в файловой системе на диске. Файловая система — это то, что ты видишь в Finder на Mac, или папки и файлы в Проводнике на компьютере с Windows. Если ты хочешь работать с файлом в Python, то сначала ты открываешь этот файл. Ты уже это делал. При открытии файла в программе создается файловый объект. Когда ты записываешь что-то в файл, пишешь в оперативную память. Потом, если ты хочешь, чтобы файл по-настоящему записался в файловую систему, ты закрываешь файл.
— Как сложно! — смутился Эрик. — Почему нельзя записывать сразу на диск?
— Ты прав, компьютеры в принципе сложные, — согласился Саймон. — Потому что инженеры постоянно пытаются ускорить работу компьютера. Записывать на диск долго, намного дольше, чем в память. Представь, что ты пишешь программу в текстовом редакторе. Если бы редактор сразу сохранял каждую букву на диск, то программа записывалась бы очень медленно. Тебе, скорее всего, не понравится работать с таким медленным компьютером.
— Ненавижу медленные компьютеры! — подтвердил Эрик.
— Чтобы компьютеры работали быстрее, — продолжил Саймон, — инженеры решили хранить данные в оперативной памяти и сохранять их на диске, только когда это необходимо. Для ускорения работы компьютера уже придумали много всяких приемов, конечно, я не знаю их все. Может быть, в колледже я узнаю побольше. Но давай вернемся к программе и закроем файл. Вспомни, у файловых объектов есть методы. В нашем случае нужно вызвать метод f.close(). Так заказ будет записан в файл. Добавь вызов метода f.close() в программу после последней строки.
Несмотря на такое длинное объяснение, изменения оказались довольно простыми. Эрик быстро добавил нужную строку и получил вот это:
import json
order = {
"name": "Эрик",
"drink": "кофе",
"flavor": "карамель",
"topping": "шоколад"
}
f = open("orders.json", "w")
json.dump(order, f)
f.close()
— Теперь запусти, — сказал Саймон.
Эрик нажал Run и увидел знакомый символ >>> в нижней части окна.
— И что теперь? — спросил Эрик.
— Ничего не произошло? — улыбнулся Саймон. Он заметил смущение Эрика. — Ты же не просил Python вывести что-то на экран. Но все же за кадром кое-что произошло. Python открыл файл orders.json, записал туда твой заказ и закрыл файл. Давай откроем этот файл и проверим, правильно ли все записалось. Открой файл в простом текстовом редакторе. У тебя Mac, поэтому тебе нужен TextEdit в папке Applications. На Windows это Блокнот, на Linux — gedit или Kate. Запусти редактор и открой файл. Он находится в домашней директории, то есть в папке mu_code, и называется orders.json.
Эрик запустил TextEdit, нашел файл и открыл его. Конечно, он увидел свой заказ.
ТВОЙ ХОД! Сохрани свой тестовый заказ в файл JSON
Напиши программу, как у Эрика. Немного измени тестовый заказ. Запусти программу и с помощью текстового редактора проверь получившийся файл JSON. Попробуй создать совсем другой заказ и снова запусти программу. JSON-файл изменился? (Возможно, придется заново открыть файл в редакторе.)
Приобретайте книгу на сайте издательского дома «Питер».
По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Комментарии: 0
Пока нет комментариев