image Привет, Хаброжители!

Поговорим на Python?

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

Программирование — это приключение, полное трудностей, нового опыта, побед и поражений. В книге “Поговорим на Python” вы присоединитесь к Эрику и Саймону, которые учатся программировать на Python и создают свое первое приложение. Книга написана специально для будущих программистов и идеальна, чтобы начать осваивать навык, который останется на всю жизнь!

Книга “Поговорим на Python” учит писать код, задавать вопросы, делать ошибки и пробовать разные решения — прямо как в жизни. Вы шаг за шагом будете создавать приложение для небольшой кофейни, начиная с онлайн-меню и заканчивая хранением заказов в базе данных. Уникальные практические задания приведут вас туда, куда не добираются другие книги для начинающих.
Читать отрывок.

Об авторе
Павел Анни — главный инженер по работе с клиентами (Principal Customer Engineer) в SambaNova Systems. Прежде чем присоединиться к этому стартапу в области искусственного интеллекта, Павел работал в Sun Microsystems, Oracle и Red Hat. Основная цель его карьеры — обучать людей и популяризировать новые технологии. Он разработал и вел курсы по языкам программирования, операционным системам Unix и Linux, Kubernetes и другим темам.

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

Отрывок из книги


Работа с JSON: сохранение заказа


— Вчера ты сказал что-то про Джейсона, — сказал Эрик. — Но оказалось, что это не тот Джейсон, который ходит со мной на математику.

— Да, это другой Джейсон, — улыбнулся Саймон. — Это JSON, J-S-O-N — формат файла, в котором мы сохраним данные.

— Как файлы, в которых мы сохраняли меню?

— Да, вроде того, — ответил Саймон. — Формат JSON хорошо подходит для хранения структурированных данных.

— Что это? — спросил Эрик.

— Иногда нам нужно сохранить небольшой текст или картинку. У таких данных нет строгой структуры. Текст — это просто текст. А картинка может быть большой или маленькой, черно-белой или цветной, но у нее нет никакой структуры — это просто набор пикселей. Поэтому такие данные называются неструктурированными. В твоем случае у каждого заказа есть структура: имя клиента и все компоненты напитка, который ты собираешься для него приготовить, — только это и ничего более. В заказе всегда есть основной напиток, вкус и топпинг. Ты так написал программу меню: заказ сохраняется или выводится на экран только после того, как клиент ответит на все вопросы. К тому же клиент ничего не может добавить в заказ.

— Например, еще один топпинг? — спросил Эрик.

— Именно, — сказал Саймон. — Твой заказ — это пример структурированных данных.

Эрик и не догадывался, что он придумал что-то с таким серьезным названием.

— Твой заказ хранится в словаре, — продолжил Саймон, — и ты точно знаешь, что в каждом заказе есть ключи name, drink, flavor и topping (помнишь, что это такое?), — Саймон достал одну из своих схем.
image

— Формат 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, то сначала ты открываешь этот файл. Ты уже это делал. При открытии файла в программе создается файловый объект. Когда ты записываешь что-то в файл, пишешь в оперативную память. Потом, если ты хочешь, чтобы файл по-настоящему записался в файловую систему, ты закрываешь файл.

image

— Как сложно! — смутился Эрик. — Почему нельзя записывать сразу на диск?

— Ты прав, компьютеры в принципе сложные, — согласился Саймон. — Потому что инженеры постоянно пытаются ускорить работу компьютера. Записывать на диск долго, намного дольше, чем в память. Представь, что ты пишешь программу в текстовом редакторе. Если бы редактор сразу сохранял каждую букву на диск, то программа записывалась бы очень медленно. Тебе, скорее всего, не понравится работать с таким медленным компьютером.

— Ненавижу медленные компьютеры! — подтвердил Эрик.

— Чтобы компьютеры работали быстрее, — продолжил Саймон, — инженеры решили хранить данные в оперативной памяти и сохранять их на диске, только когда это необходимо. Для ускорения работы компьютера уже придумали много всяких приемов, конечно, я не знаю их все. Может быть, в колледже я узнаю побольше. Но давай вернемся к программе и закроем файл. Вспомни, у файловых объектов есть методы. В нашем случае нужно вызвать метод 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, нашел файл и открыл его. Конечно, он увидел свой заказ.

image

ТВОЙ ХОД! Сохрани свой тестовый заказ в файл JSON

Напиши программу, как у Эрика. Немного измени тестовый заказ. Запусти программу и с помощью текстового редактора проверь получившийся файл JSON. Попробуй создать совсем другой заказ и снова запусти программу. JSON-файл изменился? (Возможно, придется заново открыть файл в редакторе.)

Приобретайте книгу на сайте издательского дома «Питер».

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Для Хаброжителей скидка 25% по купону — Python

Комментарии (2)


  1. kbu
    04.09.2024 19:38

    Добавьте пожалуйста оплату в bitcoin


    1. ph_piter Автор
      04.09.2024 19:38

      Точно пока не будет, на Amazone через 2 недели появится книга.