Добрый день, коллеги! Я являюсь одним из авторов блога devpractice.ru. В конце апреля 2017 года нами была написана завершающая статья из цикла «Уроки по языку Python», всего их получилось 15 штук. Спустя какое-то время, у нас появилась идея объединить весь накопленный материал. Так появилось первое издание книги «Python. Уроки». Эту книгу мы решили распространять бесплатно и предлагаем вам ознакомиться с ней.

Скачать «Python. Уроки» вы можете непосредственно с сайта.

В книге основной акцент сделан на обучение базовым вещам (установка и запуск программ, типы данных, условные операторы и циклы, структуры данных, функции, исключения), темы, связанные с ООП, итераторами и генераторами даны в ознакомительном объеме.

Краткое содержание книги:

Урок 1. Установка
Урок 2. Запуск программ на Python
Урок 3. Типы и модель данных
Урок 4. Арифметические операции
Урок 5. Условные операторы и циклы
Урок 6. Работа с IPython и Jupyter Notebook
Урок 7. Работа со списками (list)
Урок 8. Кортежи (tuple)
Урок 9. Словари (dict)
Урок 10. Функции в Python
Урок 11. Работа с исключениями
Урок 12. Ввод-вывод данных. Работа с файлами
Урок 13. Модули и пакеты
Урок 14. Классы и объекты
Урок 15. Итераторы и генераторы

Будем рады любой обратной связи!
Поделиться с друзьями
-->

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


  1. mmblsc
    19.07.2017 09:09
    +1

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


    1. LeoMat
      19.07.2017 12:08

      Я пытался сделать что-то подобное на Викиверситете


  1. AlterMax
    19.07.2017 09:20
    +2

    страница 41

    Получение дробной части от деления.
    >>> 9 % 5
    4
    >>> a = 7
    >>> b = 4
    >>> a % b
    3

    дробная часть и остаток от деления ИМХО — весьма разные вещи…


    1. marat_ab
      19.07.2017 09:21
      +1

      Да, вы правы! Остаток от деления — более корректная формулировка. Спасибо, поправим!


  1. dude_sam
    19.07.2017 10:39
    +1

    Спасибо.
    В качестве ремарки: разнообразить бы форматы. Не .pdf единым.


    1. marat_ab
      19.07.2017 11:57

      ОК, подумаем над этим! Спасибо!


    1. artivashenko
      20.07.2017 07:31

      Поддерживаю. Никак не могу себя приучить читать .pdf [с бб], предпочитаю электронную книгу.
      Даёшь .mobi! :)


  1. Gruxon
    19.07.2017 13:54
    +1

    Спасибо!

    На тему доната, может лучше вот так? "Дай рубль"

    В целом, шаг верный (про бесплатность). Сейчас крайне много материала доступного бесплатно.


    1. marat_ab
      20.07.2017 07:33

      Спасибо! Интересный вариант!


  1. kx13
    19.07.2017 13:58
    +1

    В разделах "5.2 Оператор цикла while" и "5.4 Оператор цикла for" не сказано, что у операторов while и for может быть дополнительный блок else. Это удобно и позволяет избавляться от ненужных флагов для проверки выхода.


  1. OlegZH
    19.07.2017 16:31

    Я — новичок в Питоне и крайне заинтересованный в этом языке программирования. Такая книга, скорее всего, будет мне полезной.

    Как Вы думаете, имело бы смысл брать какие-то темы (например, брать задачи типа «задач на собеседованиях») или, даже, целые проекты и освещать их на Хабре, обсуждая и то, как это описано в Вашей книге и как это может быть написано в некой будущей книге? Тут одно из двух: либо надо насыщать книгу по языку какими-то реальными (сквозными) примерами, чтобы можно было подготовиться к реальной жизни, либо писать отельную книгу по какому-либо вопросу/проекту.

    И ещё один момент. Есть ещё и Викиучебник, где сейчас лежит перевод документации по Питону. (2.7 и 3.1). Но, в действительности, предполагается, что пишется именно викиучебник, то есть — собрание учебных материалов, где можно было бы свести воедино хорошую практику программирования, сквозное описание самого языка + тематический/проектный взгляд на вещи. И здесь можно было бы использовать Хабр для создания качественных материалов. Как Вы думаете?


    1. marat_ab
      20.07.2017 08:23

      Как Вы думаете, имело бы смысл брать какие-то темы (например, брать задачи типа «задач на собеседованиях») или, даже, целые проекты и освещать их на Хабре, обсуждая и то, как это описано в Вашей книге и как это может быть написано в некой будущей книге? Тут одно из двух: либо надо насыщать книгу по языку какими-то реальными (сквозными) примерами, чтобы можно было подготовиться к реальной жизни, либо писать отельную книгу по какому-либо вопросу/проекту.

      Мне кажется лучше разделять книги, посвященные базовым вещам (синтаксис, стандартная библиотека и т.п.), и книги в формате ‘best practices’, через которые авторы делятся своим опытом, полученным при работе над реальными проектами. Конечно, их нужно освещать и обсуждать на Хабре, т.к. на сегодняшний день – это крупнейшая площадка, где собираются русскоговорящие IT специалисты.
      И ещё один момент. Есть ещё и Викиучебник, где сейчас лежит перевод документации по Питону. (2.7 и 3.1). Но, в действительности, предполагается, что пишется именно викиучебник, то есть — собрание учебных материалов, где можно было бы свести воедино хорошую практику программирования, сквозное описание самого языка + тематический/проектный взгляд на вещи. И здесь можно было бы использовать Хабр для создания качественных материалов. Как Вы думаете?

      У меня вообще есть сомнение в том, что нужно пытаться объединить всё в одном месте с единым способом подачи материала. Т.к. язык Python очень «живой» и используется в массе проектов, которые никак не связаны между собой даже тематически, возникнут трудности с поддержкой этой «библиотеки» в актуальном состоянии. Сегодня используются одни подходы и технологии, завтра все это может поменяться. В этой ситуации большой плюс Хабра в том, что он очень быстро реагирует на изменения и новые тенденции в мире Python (появляются новые посты и т.п.). А когда накапливается какой-то опыт, он, как правило, трансформируется в книгу, например, сейчас довольно много появляется материала, именно в книжном формате, посвященного Python + анализ данных + машинное обучение. В рамках Хабра, хорошо бы периодически выпускать по Python подборки подобные этой: «Подборка: Более 70 источников по машинному обучению для начинающих», ну и дайджесты (но они и так выходят).


      1. OlegZH
        20.07.2017 15:00

        Мне, как раз, и не хватает книг, описывающих ‘best practices’. Во многом, я на Хабр пришёл за тем же самым.

        У меня вообще есть сомнение в том, что нужно пытаться объединить всё в одном месте с единым способом подачи материала. Т.к. язык Python очень «живой» и используется в массе проектов, которые никак не связаны между собой даже тематически, возникнут трудности с поддержкой этой «библиотеки» в актуальном состоянии. Сегодня используются одни подходы и технологии, завтра все это может поменяться.


        Формат Викиучебника позволяет хорошо учесть пластичность языка программирования, когда по какой-то теме можно написать несколько различных статей. Викиучебник (по заданной теме) — это связный набор различных страниц и подстраниц с общей навигацией. В идеале, Викиучебник должен содержать те самые ‘best practices’, о которых Вы говорили выше. Викиучебник мог бы быть следующей ступенью после Хабра, когда берётся определённая тема, например, то же машинное обучение на Питоне, и делается обзор подходов и в структурированном виде приводятся примеры применения. Тут очень важно понимать, что должны быть соответствующие вики-учебники по другим темам (комбинаторика, алгоритмы, теория вероятностей, анализ данных, машинное обучение и т.д. и т.п.) и, в идеале, все эти разнотемные вики-учебники должны быть между собою хорошо связаны. (Даже если сделать отображение всех материалов Хабра на Викиучебник, то получится весьма полезный для читателя продукт!)

        То, что касается, лично меня, то я очень хотел бы иметь возможность брать отдельные задачи/вопросы/темы, предполагающие применения Питона, и делать обзорные статьи, излагающие различные варианты решений. В идеале, такие статьи должны содержать полезные сведения и для новичков (желающих изучать Питон и для желающих овладеть определённой темой), так и для специалистов (тут нужно всестороннее рассмотрение предмета статьи и системный подход!).

        Темами для статей могут быть полезные задачки на собеседованиях, примеры ‘best practices’ и фундаментальные вопросы. При изучении каждой темы всегда следует ставить вопрос: а что нужно сделать, чтобы быстрее и глубже изучить данный вопрос (данный аспект языка программирования, данную библиотеку, данную технологию). Я такой вопрос попробовал себе поставить и уже успел увидеть несколько потенциальных вариантов тематических статей. Главное, чтобы в статье был хороший практический выход. (Так можно будет написать новую книгу, наверное.)

        Может быть, я мог бы с Вами советоваться, чтобы на выходе получилось что-то нужное и полезное (для сообщества)?


        1. marat_ab
          24.07.2017 10:09

          Может быть, я мог бы с Вами советоваться, чтобы на выходе получилось что-то нужное и полезное (для сообщества)?

          Конечно можно! Будут вопросы — обращайтесь!


  1. shockable
    20.07.2017 07:31
    +1

    В 14 главе:

           print("Color: " + self.color)
           print("Width: " + str(self.width))
    

    ИМХО, стоит использовать форматирование вместо конкатенации строк и явно указать поля:
    rect1 = Rectangle("red", 24, 45)  # rect1 = Rectangle(color="red", width=24, height=45)
    

    чтоб приучать читателя книги к более поддерживаемому коду.


    1. kx13
      20.07.2017 08:17
      +1

      print("Color: " + self.color)

      Для двух слагаемых такой вариант тоже не читабелен, главное, чтобы второе слогаемое было бы строкой.
      Но вот когда переменных больше двух, тогда необходим format.


      Кстати, можно упомянуть, что в последней версии 3.6 появился
      новый способ форматирования.


  1. irinasurma
    20.07.2017 07:31
    +1

    То, что доктор прописал! Спасибо!)


    1. marat_ab
      20.07.2017 07:39

      Пожалуйста!)


  1. bert4
    20.07.2017 07:31
    +1

    В пункте 1.2.1 предлагаю сделать оговорочку, что для установки требуется как минимум SP1 на семерке, а то не учел этот факт и пришлось делать апдейт винды


    1. marat_ab
      20.07.2017 07:35

      Спасибо! Добавим!


  1. kx13
    20.07.2017 08:19
    +1

    Вот еще неплохое руководство.


    Интересно сравнение книги с этим ресурсом.


  1. EOShipnyagov
    20.07.2017 20:57

    Книжку скачаю, ознакомлюсь, интересно.
    Одно небольшое «но», которое озвучу до прочтения книги, в надежде что у вас иначе)

    Почти во всех курсах и учебниках по различным языкам (по крайней мере онлайн) очень долго разжевывают что такое переменные и функции, а как дело доходит до объектов и классов — так «ну это же и так ведь понятно». И практически никогда не приводится примеров реальных программ с функционалом посерьезнее калькулятора.

    Как выводить графику? Библиотеки? Модули? Как с ними работать? Черт с ней, с графикой, как сделать консольное приложение с псевдоинтерфейсом? Как сохранять состояние переменных? Как потом это дело обратно в программу загрузить? Как правильно делать архитектуру приложения — главный цикл с кучей функций, которые прописываются до него или как?

    В общем не освещается множество вопросов, ибо когда я сел в свое время писать простенький to-do менеджер, то столкнулся с тем, что что-бы сделать любое действие, нужно было несколько часов гуглить. В итоге пришлось бросить.


    1. kx13
      20.07.2017 21:51

      Про все библиотеки не напишешь. Быстрее погуглить название библиотеки для нужной задачи.


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


      Дольше потом выбирать из множества вариантов.


      А по тому как правильно писать программы существуют о дельные книги. Их и надо читать сначала.


      Просто те у кого есть опыт они уже своё время потратили на обучение и им гуглит не надо. Поэтому быстро не получится в любом случае.


      1. OlegZH
        21.07.2017 14:25

        Может быть, те «у кого есть опыт они уже своё время потратили на обучение», попробуют написать какие-нибудь книжки по следам своего опыта? Статья на Хабре — это хорошо. Иногда(,) даже(,) очень хорошо. Но! Было бы неплохо превратить серию статей в одну монографию (по определённой теме), да снабдить её хабровскими комментариями и комментариями автора на эти комментарии.


        1. kx13
          21.07.2017 14:37

          Все это давно написано.
          Классика на английском:


          How to Design Programs


          SICP


          Если говорить именно про Python, то у Лутца есть двухтомник "Программирование на Python", там уже рассматривается как писать программы. Можете еще посмотреть книгу Л.Рамальо "Python к вершинам мастерства".


          Ну и для общего развития читать С.Макдонелла "Совершенный код", П.Гудлиф "Ремесло программиста", вообще таких книг достаточно много.


          1. OlegZH
            22.07.2017 20:36

            Может быть, всё-таки, попытаться что-нибудь такое написать?

            Я имел в виду, например, возможность взять какой-то сквозной пример, какой-то набор реальных задач, решая которые на Питоне можно было бы хорошо почувствовать язык и приобрести реальный опыт. К тому же, если такую книгу построить в виде беседы или снабдить каждую главу беседной частью (некоторые беседы на Хабре стоят целой поэмы, а поэма стоит целого романа!), то могло бы получиться нечто особо выразительное и эффективное для любого читателя.

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


            1. kx13
              22.07.2017 21:55

              На питоне программы пишутся точно так же как и на других подобных языках.


              Реальные задачи они ведь разные, от примитивных до огромных. В книге "Программирование на Python" как раз рассматриваются примеры готовых программ.


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


              Можно поискать всякие python-idioms, best-practice и все такое. Это набор небольших рецептов, с которые надо применять на практике.


              Одна конкретная книга, не научит писать программы, надо прочитать не меньше десятка книг и написать много программ.


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


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


              Лучший вариант, если найдется более опытный товарищ, который прокомментирует код и укажет на ошибки.


              Если есть какая-то реальная задача и ты не знаешь как к ней приступить, задавай более конкретные вопросы, получишь более конкретные ответы.