Чистый Python. Тонкости программирования для профи - Дэн Бейдер - E-Book

Чистый Python. Тонкости программирования для профи E-Book

Дэн Бейдер

0,0

Beschreibung

Изучение всех возможностей Python — сложная задача, а с этой книгой вы сможете сосредоточиться на практических навыках, которые действительно важны. Раскопайте «скрытое золото» в стандартной библиотеке Python и начните писать чистый код уже сегодня. • Если у вас есть опыт работы со старыми версиями Python, вы сможете ускорить работу с современными шаблонами и функциями, представленными на Python 3; • Если вы работали с другими языками программирования, и хотите перейти на Python, то найдете практические советы, необходимые для того, чтобы стать эффективным питонщиком; • Если вы хотите научиться писать чистый код, то найдете здесь самые интересные примеры и малоизвестные трюки. "Чтобы освоить Python, нужно не только понимать теоретические аспекты языка. Для достижения этой цели придется понять и принять общие правила и самые лучшие практические приемы, используемые сообществом. Книга Дэна поможет вам в этом путешествии. Я убеждена, что, прочитав ее, вы почувствуете себя увереннее." Мариатта Виджайя, разработчик ядра Python (mariatta.ca)

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 274

Veröffentlichungsjahr: 2022

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Дэн Бейдер
Чистый Python. Тонкости программирования для профи

Переводчик А. Логунов

Технический редактор А. Бульченко

Литературный редактор Д. Дрошнев

Художники С. Заматевская , В. Мостипан

Корректоры Н. Викторова, И. Тимофеева

Верстка Л. Егорова

Дэн Бейдер

Чистый Python. Тонкости программирования для профи. — СПб.: Питер, 2021.

ISBN 978-5-4461-0803-9

© ООО Издательство "Питер", 2021

Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.

Оглавление

Что питонисты говорят о книге «Чистый Python. Тонкости программирования для профи»
Предисловие
Комментарии переводчика
От издательства
1. Введение
1.1. Что такое идиома Python
1.2. Чем эта книга будет полезна
1.3. Как читать эту книгу
1.4. Тонкости Python: цифровой комплект инструментов в качестве бонуса
2. Шаблоны для чистого Python
2.1. Прикрой свой з** инструкциями assert
2.2. Беспечное размещение запятой
2.3. Менеджеры контекста и инструкция with
2.4. Подчеркивания, дандеры и другое
2.5. Шокирующая правда о форматировании строковых значений
2.6. Пасхалка «Дзен Python»
3. Эффективные функции
3.1. Функции Python — это объекты первого класса
3.2. Лямбды — это функции одного выражения
3.3. Сила декораторов
3.4. Веселье с *args и **kwargs
3.5. Распаковка аргументов функции
3.6. Здесь нечего возвращать
4. Классы и ООП
4.2. Преобразование строк (каждому классу по __repr__)
4.3. Определение своих собственных классов-исключений
4.4. Клонирование объектов для дела и веселья
4.5. Абстрактные базовые классы держат наследование под контролем
4.6. Чем полезны именованные кортежи
4.7. Переменные класса против переменных экземпляра: подводные камни
4.8. Срыв покровов с методов экземпляра, методов класса и статических методов
5. Общие структуры данных Python
5.1. Словари, ассоциативные массивы и хеш-таблицы
5.2. Массивоподобные структуры данных
5.3. Записи, структуры и объекты переноса данных
5.4. Множества и мультимножества
5.5. Стеки (с дисциплиной доступа LIFO)
5.6. Очереди (с дисциплиной доступа FIFO)
5.7. Очереди с приоритетом
6. Циклы и итерации
6.1. Написание питоновских циклов
6.2. Осмысление включений
6.3. Нарезки списков и суши-оператор
6.4. Красивые итераторы
6.5. Генераторы — это упрощенные итераторы
6.6. Выражения-генераторы
6.7. Цепочки итераторов
7. Трюки со словарем
7.1. Значения словаря, принимаемые по умолчанию
7.2. Сортировка словарей для дела и веселья
7.3. Имитация инструкций выбора на основе словарей
7.4. Самое сумасшедшее выражение-словарь на западе
7.5. Так много способов объединить словари
7.6. Структурная печать словаря
8. Питоновские методы повышения производительности
8.1. Исследование модулей и объектов Python
8.2. Изоляция зависимостей проекта при помощи Virtualenv
8.3. По ту сторону байткода
9. Итоги
9.1. Бесплатные еженедельные советы для разработчиков на Python
9.2. PythonistaCafe: сообщество разработчиков на Python

Что питонисты говорят о книге «Чистый Python. Тонкости программирования для профи»

«Мне эта книга безумно нравится. Она похожа на репетитора, который разъясняет… ну, типа, всякие трюки или идиомы. Я изучаю Python на работе и перешел на него с оболочки командной строки Powershell, с которой я познакомился там же, — масса нового и фантастического материала. Всякий раз, когда я попадаю в тупик с Python (обычно с шаблонным кодом Flask) или когда чувствую, что мой исходный код мог бы выглядеть как-то более по-питоновски, я направляю вопросы в нашу внутреннюю дискуссионную группу Python.

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

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

Как человеку, у которого нет ученой степени в области Computer Science, мне приятно иметь учебное пособие, объясняющее вещи, которые другие, возможно, узнали, получая академическое образование. Для меня огромное удовольствие читать эту книгу. И кроме того, я также подписан на электронную рассылку, что и помогло мне выйти на это издание».

— Даниэль Мейер (Daniel Meyer), старший администратор локальных систем в Tesla Inc.

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

Он показал мне книгу по видеосвязи — и я как бы просмотрел ее, когда он пролистывал мне страницы. Я сразу же загорелся узнать больше.

Уже к полудню я купил собственный экземпляр книги и продолжил читать о том, как в Python создаются словари. Спустя несколько часов, когда я встретил другого коллегу за чашкой кофе, то использовал похожий трюк уже с ним. :)

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

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

— Ог Масьел (Og Maciel),  разработчик на Python в Red Hat

«C великим удовольствием читал книгу Дэна. Он раскрывает важные аспекты Python на ясных примерах (в одном из них используя кошек-близнецов, чтобы объяснить операторы is и ).

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

Благодаря этой книге я вдохновился новейшими практическими приемами программирования на Python: например, стал использовать собственные исключения и абстрактные классы (когда искал их, нашел и блог Дэна). Одни только эти новые знания оправдывают цену книги».

— Боб Бельдербос (Bob Belderbos), инженер Oracle и соучредитель PyBites

Предисловие

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

Когда меня впервые познакомили с языком Python, то сказали, что все будет легко и я освою его очень быстро. Когда же я спросила коллег о ресурсах по изучению Python, мне дали всего одну-единственную ссылку на официальную документацию. Чтение ее поначалу сбивало с толку, и ушло достаточно много времени, прежде чем я научилась уверенно в ней ориентироваться, не говоря уже о том, чтобы разбираться. Нередко мне приходилось искать решения на веб-сайте StackOverflow.

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

Я потратила немало лет, чтобы полностью осознать ценность этого языка. Читая книгу Дэна, я досадовала, что у меня не было ее тогда, когда много лет назад я только начала изучать Python.

Например, одним из многих уникальных функциональных средств языка Python, которое поначалу меня удивило больше всего, была конструкция включения в список. Как Дэн отмечает в своей книге, обычной реакцией тех, кто только перешел на Python с другого языка, становятся слова «Так вот как они используют циклы for!». Помню один из первых комментариев с обзором исходного кода, который я получила, когда начинала программировать на Python: «Почему бы здесь не применить включение в список?» Дэн четко разъясняет это понятие в главе 6, начиная с показа организации цикла в чисто питоновском стиле и постепенно достраивая его до итераторов и генераторов.

В разделе 2.5 Дэн рассматривает различные способы форматирования строковых значений в Python. Форматирование строковых значений — это одна из тех вещей, которые бросают вызов Дзену языка Python, гласящему, что должен существовать один и желательно только один очевидный способ сделать это. Дэн показывает разные способы, в том числе мое любимое новое дополнение к языку, f-строки, а также объясняет плюсы и минусы каждого метода.

Глава «Питоновские методы повышения производительности» представляет собой еще один великолепный ресурс. Она охватывает аспекты, лежащие за пределами языка программирования Python, а также содержит советы о том, как отлаживать свои программы, как управлять библиотеками, от которых они зависят, и дает вам возможность заглянуть внутрь байткода Python.

Для меня большая честь и удовольствие представить книгу «Чистый Python. Тонкости программирования для профи» моего друга Дэна Бейдера.

Участвуя в развитии языка Python в качестве разработчика ядра CPython, я общаюсь со многими членам сообщества. На своем пути я встретила много наставников, помощников и завела много новых друзей. Они напоминают мне о том, что Python — это не только исходный код, но прежде всего — сообщество.

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

Книга Дэна поможет вам в этом путешествии. Я убеждена, что, прочитав ее, вы почувствуете себя увереннее в написании программ на Python.

— Мариатта Виджайя (Mariatta Wijaya),   разработчик ядра Python (mariatta.ca)

Комментарии переводчика

Весь материал настоящей книги протестирован в среде Windows 10. При тестировании исходного кода за основу взят Python версии 3.6.4 (время перевода — апрель 2018 года).

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

Базовый набор библиотек для разработчика

В обычных условиях библиотеки Python можно скачать и установить из каталога библиотек Python PyPi (https://pypi.python.org/) с помощью менеджера пакетов pip. Однако следует учесть, что в ОС Windows для работы некоторых библиотек, в частности SciPy, Scikit-learn и Scikit-image, требуется, чтобы в системе была установлена библиотека Numpy+MKL. Библиотека Numpy+MKL привязана к библиотеке Intel® Math Kernel Library и включает в свой состав необходимые динамические библиотеки (DLL) в каталоге numpy.core. Библиотеку Numpy+MKL следует скачать из хранилища whl-файлов на веб-странице Кристофа Голька из лаборатории динамики флуоресценции Калифорнийского университета в г. Ирвайн (http://www.lfd.uci.edu/~gohlke/pythonlibs/) и установить при помощи менеджера пакетов pip как whl (соответствующая процедура установки пакетов в формате whl описана ниже). Например, для 64-разрядной операционной системы Windows и среды Python 3.6 команда будет такой:

pip install numpy-1.14.2+mkl-cp36-cp36m-win_amd64.whl

Такой режим установки также касается библиотек scipy, scikit-image и scikit-learn. Стоит также отметить, что эти особенности установки не относятся к ОС Linux и Mac. Далее приводятся сведения об основополагающих библиотеках.

• NumPy — основополагающая библиотека, необходимая для научных вычислений на Python.

• SciPy — библиотека, используемая в математике, естественных науках и инженерном деле. Требует наличия numpy+mkl.

• Matplotlib — библиотека для работы с двумерными графиками.

• Pandas — инструмент для анализа структурных данных и временных рядов. Требует наличия numpy и некоторых других. Для чтения файлов Excel требует установки библиотеки xlrd.

• Scikit-learn — интегратор классических алгоритмов машинного обучения. Требует наличия numpy+mkl.

• Scikit-image — коллекция алгоритмов для обработки изображений. Требует наличия numpy+mkl.

• Jupyter — интерактивная онлайновая вычислительная среда.

• PyQt5 — библиотека инструментов для программирования графического интерфейса пользователя, требуется для работы инструментальной среды программирования Spyder.

• Spyder — инструментальная среда программирования на Python.

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.

1. Введение

1.1. Что такое идиома Python

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

Книга «Чистый Python. Тонкости программирования для профи» началась как серия скриншотов с фрагментами кода, которыми я делился в Твиттере в течение одной недели. К моему удивлению, они получили отклики, а потом еще несколько дней подряд их продолжали распространять и ретвитить.

Разработчики все чаще и чаще стали обращаться ко мне с вопросом, как «получить всю серию». На самом деле у меня на очереди было еще лишь несколько таких идиом, которые охватывали целый ряд тем, связанных с Python. И за ними не было никакого плана. Они были просто забавным экспериментом в Твиттере.

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

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

Именно тогда я решил удвоить ставку на моем эксперименте с идиомами Python и довел его до серии из порядка 30 электронных сообщений. Каждое из них представляло собой заголовок и снимок экрана с примером, и вскоре я осознал пределы этого формата. Примерно в ту же пору на мой электронной ящик пришло письмо от незрячего разработчика на Python, разочарованного тем, что эти идиомы поставлялись как изображения, которые он не мог прочитать с помощью экранного диктора.

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

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

Скажем так: этот аспект был еще одной большой областью для улучшения. Основная задача моего веб-сайта dbader.org состоит в том, чтобы помогать разработчикам на Python становиться еще более потрясающими, — и очевидно, что этот аспект предоставлял возможность приблизиться к этой цели.

Я решил взять из своего почтового курса самые лучшие и самые ценные трюки и идиомы и на их основе приступил к написанию книги нового типа по Python:

• книги, которая обучает самым крутым аспектам языка с помощью коротких и легких для усвоения примеров;

• книги, в которой хранятся потрясающие функциональные средства языка Python (класс!) и которая поддерживает мотивацию на высоком уровне;

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

Для меня эта книга — результат моих любимых занятий и большой эксперимент. Надеюсь, что вы получите удовольствие от ее прочтения и по ходу узнаете еще что-то о Python!

— Дэн Бейдер

1.2. Чем эта книга будет полезна

Цель этой книги в том, чтобы сделать вас лучшим — более эффективным, более осведомленным, более практичным — разработчиком на языке Python. Вы, вероятно, задаетесь вопросом: а как чтение этой книги поможет мне всего этого достигнуть?

«Чистый Python» — это не пошаговое учебное пособие по Python. И это не курс языка Python начального уровня. Если вы находитесь на начальных стадиях изучения этого языка, то в одиночку эта книга не превратит вас в профессионального разработчика на Python. Ее чтение, безусловно, окажет на вас благотворное влияние, но при этом вам обязательно нужно поработать с другими ресурсами, которые сформируют ваши основополагающие навыки программирования на Python.

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

Чтение книги «Чистый Python. Тонкости программирования для профи» также окажет бесценную помощь, если у вас уже имеется опыт работы с другими языками программирования и вы надеетесь поскорее разобраться в тонкостях языка Python. Вы обнаружите массу практических советов и шаблонов проектирования, которые сделают вас более эффективным и квалифицированным программистом на Python.

1.3. Как читать эту книгу

Оптимальный способ чтения книги «Чистый Python. Тонкости программирования для профи» — рассматривать ее как копилку потрясающих функциональных средств языка Python. Каждая приводимая в книге идиома Python — самодостаточна, и поэтому ничего страшного, если вы будете обращаться к тем из них, которые вызывают у вас наибольший интерес. На самом деле именно это я вам и рекомендую делать.

Разумеется, вы также можете прочитать всю книгу «Чистый Python. Тонкости программирования для профи» от начала до конца. И когда вы дойдете до заключительной страницы, вы не пропустите ни одной идиомы и шаблона и будете знать, что ознакомились со всем.

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

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

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

1.4. Тонкости Python: цифровой комплект инструментов в качестве бонуса

Эта книга сопровождается коллекцией бонусных ресурсов, которые я называю «Тонкости Python: цифровой комплект инструментов»1.

Среди всего прочего этот комплект инструментов включает 12 видео­уроков HD-качества общей продолжительностью более двух часов. Эти видеопособия тесно связаны с отдельными главами книги и помогут вам быстрее усвоить и закрепить знания, акцентировав внимание на ключевых моментах.

Доступ к копии цифрового комплекта инструментов можно получить онлайн на моем веб-сайте по адресу dbader.org/python-tricks-toolkit.

1 См. https://dbader.org/python-tricks-toolkit