ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.12.2023
Просмотров: 371
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Глава 11.Комментарии, doc-строки и аннотации типов
..................216
Комментарии
..................................................217
Стиль комментариев
.........................................218
Встроенные комментарии
.....................................218
Пояснительные комментарии
..................................219
Сводные комментарии
.......................................220
Комментарии «полученный опыт»
...............................220
Комментарии об авторских правах и интеллектуальной собственности
..............................................221
Профессиональные комментарии
..............................221
Кодовые метки и комментарии TODO
...........................222
Магические комментарии и кодировка исходных файлов
...........223
Doc-строки
....................................................223
Аннотации типов
...............................................226
Статические анализаторы
....................................228
Аннотации типов для набора типов
.............................230
Аннотации типов для списков, словарей и т. д.
....................231
Обратное портирование аннотаций типов
.......................232
Итоги
........................................................234
Глава 12. Git и организация программных проектов
....................235
Коммиты и репозитории
.........................................236
Создание новых проектов Python с использованием Cookiecutter
........236
Установка Git
..................................................239
Настройка имени пользователя и адреса электронной почты
........239
Установка графических средств Git
.............................240
Работа с Git
...................................................241
Как Git отслеживает статус файлов
.............................241
Для чего нужно индексирование?
...............................243
14
Оглавление
Создание репозитория Git на вашем компьютере
.....................243
Добавление файлов для отслеживания
..........................245
Игнорирование файлов в репозитории
..........................247
Сохранение изменений
......................................248
Удаление файлов из репозитория
..............................252
Переименование и перемещение файлов из репозитория
...........253
Просмотр журнала коммитов
.....................................255
Восстановление старых изменений
................................256
Отмена несохраненных локальных изменений
....................256
Деиндексирование проиндексированного файла
..................257
Отмена последних коммитов
..................................257
Возврат к конкретному коммиту для отдельного файла
.............258
Перезапись истории коммитов
.................................259
GitHub и команда git push
........................................260
Отправка существующего репозитория на GitHub
.................261
Клонирование существующего репозитория GitHub
................262
Итоги
........................................................262
Глава 13.Измерение быстродействия и анализ сложности алгоритмов
.....264
Модуль timeit
..................................................265
Профилировщик cProfile
.........................................267
Анализ алгоритмов с использованием нотации «O-большое»
...........269
Порядки нотации «О-большое»
...................................270
Книжная полка как метафора порядков «О-большое»
..............271
«О-большое» как оценка худшего сценария
......................275
Определение порядка сложности нотации «О-большое» вашего кода
....277
Почему низкие порядки и коэффициенты не важны
.................279
Примеры анализа «О-большое»
...............................280
Порядок «О-большое» для часто используемых функций
............283
Моментальный анализ сложности
..............................285
«О-большое» не имеет значения при малых n… а значения n обычно малы
...............................................286
Итоги
........................................................286
Оглавление
15
Глава 14.Проекты для тренировки
..................................288
Головоломка «Ханойская башня»
..................................289
Вывод результатов
...........................................289
Исходный код
..............................................291
Написание кода
............................................293
Игра «Четыре в ряд»
............................................301
Вывод результатов
...........................................301
Исходный код
..............................................302
Написание кода
............................................305
Итоги
........................................................314
ЧАСТЬ III
ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ PYTHON
Глава 15. Объектно-ориентированное программирование и классы
.......316
Аналогия из реального мира: заполнение форм
......................317
Создание объектов на базе классов
...............................319
Создание простого класса: WizCoin
...............................320
Методы, __init__() и self
.......................................322
Атрибуты
..................................................323
Приватные атрибуты и приватные методы
........................324
Функция type() и атрибут __qualname__
............................326
Примеры программирования с применением ООП и без него:
«Крестики-нолики»
.............................................327
Трудности проектирования классов для проектов реального мира
.......333
Итоги
........................................................334
Глава 16.Объектно-ориентированное программирование и наследование
...................................................335
Как работает наследование
......................................335
Переопределение методов
....................................338
Функция super()
.............................................340
Предпочитайте композицию наследованию
......................342
Обратная сторона наследования
...............................343
16
Оглавление
Функции isinstance() и issubclass()
..................................346
Методы классов
................................................347
Атрибуты классов
..............................................349
Статические методы
............................................350
Когда использовать объектно-ориентированные статические средства и средства уровня классов
.......................................350
Термины объектно-ориентированного программирования
..............351
Инкапсуляция
..............................................351
Полиморфизм
..............................................351
Когда наследование не используется
...............................352
Множественное наследование
....................................353
Порядок разрешения методов
....................................354
Итоги
........................................................356
Глава 17.ООП в Python: свойства и dunder-методы
.....................358
Свойства
.....................................................358
Преобразование атрибута в свойство
...........................359
Использование методов setter для проверки данных
................362
Свойства, доступные только для чтения
..........................364
Когда использовать свойства
..................................365
Dunder-методы Python
...........................................366
Dunder-методы строкового представления
........................366
Числовые dunder-методы
.....................................369
Отраженные числовые dunder-методы
...........................373
Dunder-методы присваивания на месте (in-place)
..................375
Dunder-методы сравнения
.....................................377
Итоги
........................................................382
Моему племяннику Джеку
Об авторе
Эл Свейгарт — разработчик и автор технической литературы, живет в Сиэтле.
Python — его любимый язык программирования, он разработал для Python несколь- ко модулей с открытым кодом. Его другие книги доступны бесплатно на условиях лицензии Creative Commons на его веб-сайте https://www.inventwithpython.com/.
Кошка автора книги — Зофи — весит 5 килограммов.
О техническом редакторе
Кеннет Лав (Kenneth Love) — программист, преподаватель и организатор конфе- ренций. Он — соавтор Django и член сообщества PSF (Python Software Foundation).
В настоящее время работает техническим руководителем и инженером-програм- мистом в O’Reilly Media.
Благодарности
Несправедливо, что на обложке этой книги стоит только мое имя. Эта книга никогда не появилась бы без поддержки многих людей. Хочу поблагодарить своего издателя,
Билла Поллока (Bill Pollock), а также всех моих редакторов: Фрэнсис Со (Frances
Saux), Энни Чой (Annie Choi), Мег Снеерингер (Meg Sneeringer) и Яна Кэша (Jan
Cash). Также хочу сказать спасибо редактору Морин Форис (Maureen Forys), вы- пускающему редактору Энн Мэри Уокер (Anne Marie Walker) и исполнительному редактору No Starch Press Барбаре Йен (Barbara Yien). Я очень признателен Джошу
Эллингсону (Josh Ellingson) за еще одну замечательную иллюстрацию для обложки.
Моя благодарность техническому редактору Кеннету Лаву (Kenneth Love) и всем остальным замечательным друзьям, с которыми я познакомился в сообществе
Python.
Введение
Hello, world! В конце 1990-х я только начинал программи- ровать, мечтал стать настоящим хакером и листал последние выпуски журнала «2600: The Hacker Quarterly». Однажды я набрался смелости и посетил ежемесячное сборище про- граммистов в моем городе; меня поразило, насколько знающими казались все окружающие. (Позднее я понял, что у многих само- уверенности было больше, чем реальных знаний.) Весь вечер я поддакивал тому, что говорили другие, стараясь не отставать от них. Покидая встречу, я твердо возна- мерился посвятить все свободное время изучению компьютеров, программирования и сетевой безопасности, чтобы достойно поучаствовать во встрече в следующем месяце.
Но на следующем сборище я все так же кивал и чувствовал себя болваном по срав- нению со всеми остальными. Я снова решил: надо учиться, чтобы стать «достаточно умным» и не отставать от окружающих. Месяц за месяцем я корпел над книгами, но всегда чувствовал себя отстающим. Я начал осознавать, насколько необъятна эта область, и беспокоился, что никогда не буду знать достаточно.
Я знал о программировании больше, чем мои друзья, но безусловно недостаточно для того, чтобы получить должность разработчика. В 1990-е годы Google, YouTube и «Википедии» еще не было. Но даже если бы эти ресурсы были доступны, мне было бы сложно пользоваться ими: я просто не знал, что изучать дальше. Но все это время я учился писать программу «Hello, world!» на разных языках программи- рования и по-прежнему осознавал, что толком не двигаюсь вперед. Я не понимал, как подняться выше базового уровня.
Разработка вовсе не ограничивается циклами и функциями. Но после того, как вы ознакомитесь со вводным курсом или прочитаете книгу по программированию
20
Введение начального уровня, поиск новой информации приведет вас к очередному учебнику, посвященному написанию «Hello, world!». Программисты часто называют этот период «пустыней отчаяния»: время, когда вы бесцельно блуждаете по разным учебным материалам, ощущая, что топчетесь на месте. Вы превзошли начальный уровень, но вам еще не хватает опыта для более сложных тем.
Блуждающие в пустыне испытывают сильный «синдром самозванца». Вы не чув- ствуете себя «настоящим» программистом и не умеете создавать такой код, как
«настоящие» программисты. Я писал эту книгу именно для такой аудитории. Если вы изучили основы Python, моя книга поможет вам стать более эффективным раз- работчиком и преодолеть отчаяние.
Для кого написана эта книга и почему
Книга предназначена для читателей, которые изучили базовый курс языка Python и хотят узнать больше. Базовые знания могут дать моя предыдущая книга «Automate the Boring Stuff with Python» (No Starch Press, 2019)
1
, книга Эрика Мэтиза (Eric
Matthes) «Python Crash Course» (No Starch Press, 2019)
2
или какой-нибудь сетевой курс.
Возможно, эти учебники вызвали у вас интерес к программированию, но вам все равно не хватает знаний. Если вы чувствуете, что еще не достигли профессиональ- ного уровня, и не знаете, как его достичь, то эта книга написана для вас. А может быть, вы знакомы с другим языком программирования, а теперь хотите переклю- читься на Python и его экосистему без изучения основ уровня «Hello, world!».
В таком случае вам наверняка не захочется читать сотни страниц с объяснением базового синтаксиса; вместо этого достаточно просмотреть статью «Learn Python in
Y Minutes» (https://learnxinyminutes.com/docs/python/) или страницу Эрика Мэтиза
(Eric Matthes) «Python Crash Course — Cheat Sheet» (https://ehmatthes.github.io/
pcc/cheatsheets/README.html).
О книге
Книга более глубоко знакомит вас с синтаксисом Python, но не ограничивается этим. Я рассказываю о командной строке и средствах командной строки, исполь- зуемых профессиональными разработчиками: системах форматирования кода, статических анализаторах и системах контроля версий. Я объясняю, какие аспек- ты делают ваш код более удобочитаемым и как писать более чистый и понятный
1
Свейгарт Э. Автоматизация рутинных задач с помощью Python.
2
Мэтиз Э. Изучаем Python: программирование игр, визуализация данных, веб-приложения.
3-е изд. — СПб.: Питер, 2017.
О книге
21
код. В книге представлен ряд программ, чтобы вы увидели применение этих принципов в реальном коде. И хотя это не учебник компьютерной теории, здесь также рассматривается анализ алгоритмов в нотации «О-большое» и объектно- ориентированная парадигма.
Никакая книга не превратит вас в профессионального разработчика, но я надеюсь, что мой труд расширит ваши познания в этой области. Я представлю некоторые темы, которые обычно познаются лишь на опыте, полученном тяжелой практикой.
Прочитав эту книгу, вы приобретете прочную основу, которая позволит вам с боль- шей уверенностью браться за новые задачи.
И хотя я рекомендую читать главы этой книги последовательно, ничто не мешает вам переходить к тем главам, которые вас интересуют больше.
Часть I. Первые шаги
Глава 1. Обработка ошибок и обращение за помощью. Вы узнаете, как эффективно задавать вопросы и самостоятельно находить ответы. Также вы научитесь читать сообщения об ошибках и освоите этикет обращения за помощью в интернете.
Глава 2. Подготовка среды и командная строка. О том, как работать в режи- ме командной строки и как настроить среду разработки и переменную PATH.
Часть II. Передовые практики, инструменты и методы
Глава 3. Форматирование кода при помощи Black. В этой главе рассматри- вается руководство по стилю PEP 8 и форматирование кода для улучшения его удобочитаемости. Вы узнаете, как автоматизировать этот процесс при помощи инструмента форматирования кода Black.
Глава 4. Выбор понятных имен. Правила выбора имен переменных и функ- ций для улучшения удобочитаемости кода.
Глава 5. Поиск запахов в коде. Некоторые потенциальные тревожные при- знаки, которые могут указывать на наличие ошибок в вашем коде.
Глава 6. Написание питонического кода. Некоторые способы создания идиоматического кода Python и признаки, присущие питоническому коду.
Глава 7. Жаргон программистов. Технические термины, используемые в области программирования, и термины, которые нередко вызывают путаницу.
Глава 8. Часто встречающиеся ловушки Python. Типичные источники не- доразумений и ошибок в языке Python, способы их исправления и стратегии программирования, которых лучше избегать.
22
Введение
Глава 9. Экзотические странности Python. Некоторые экзотические особен- ности языка Python, включая интернирование строк и пасхалки, которые могут остаться незамеченными. Разобравшись с тем, почему некоторые типы данных и операторы ведут себя неожиданным образом, вы начнете лучше понимать, как работает Python.
Глава 10. Написание эффективных функций. Глава рассказывает, как струк- турировать ваши функции для достижения наибольшей практичности и удо- бочитаемости. Вы узнаете о синтаксисе аргументов
*
и
**
, о достоинствах и недостатках больших и малых функций и средствах функционального программирования — таких как лямбда-функции.
Глава 11. Комментарии, doc-строки и аннотации типов. Вы узнаете, на- сколько важны части вашей программы, не содержащие программного кода, и каково их влияние на сопровождение, с какой частотой следует писать комментарии и doc-строки и как сделать их более содержательными. Также в главе обсуждаются аннотации типов и использование статических анали- заторов (таких как MyPy) для выявления ошибок.
Глава 12. Git и организация программных проектов. Система контроля вер- сий Git предназначена для записи истории изменений, вносимых в исходный код, и восстановления предыдущих версий работы или определения точки, в которой ошибка появилась впервые. Также я немного расскажу о структу- рировании файлов с кодом ваших проектов с использованием программы
Cookiecutter.
Глава 13. Измерение быстродействия и анализ сложности алгоритмов.
В этой главе рассказано, как объективно измерить скорость выполнения вашего кода при помощи модулей timeit и cProfile
. Кроме того, мы рас- смотрим нотацию «О-большое» и способы прогнозирования снижения быстродействия кода с ростом объема обрабатываемых данных.
..................216
Комментарии
..................................................217
Стиль комментариев
.........................................218
Встроенные комментарии
.....................................218
Пояснительные комментарии
..................................219
Сводные комментарии
.......................................220
Комментарии «полученный опыт»
...............................220
Комментарии об авторских правах и интеллектуальной собственности
..............................................221
Профессиональные комментарии
..............................221
Кодовые метки и комментарии TODO
...........................222
Магические комментарии и кодировка исходных файлов
...........223
Doc-строки
....................................................223
Аннотации типов
...............................................226
Статические анализаторы
....................................228
Аннотации типов для набора типов
.............................230
Аннотации типов для списков, словарей и т. д.
....................231
Обратное портирование аннотаций типов
.......................232
Итоги
........................................................234
Глава 12. Git и организация программных проектов
....................235
Коммиты и репозитории
.........................................236
Создание новых проектов Python с использованием Cookiecutter
........236
Установка Git
..................................................239
Настройка имени пользователя и адреса электронной почты
........239
Установка графических средств Git
.............................240
Работа с Git
...................................................241
Как Git отслеживает статус файлов
.............................241
Для чего нужно индексирование?
...............................243
14
Оглавление
Создание репозитория Git на вашем компьютере
.....................243
Добавление файлов для отслеживания
..........................245
Игнорирование файлов в репозитории
..........................247
Сохранение изменений
......................................248
Удаление файлов из репозитория
..............................252
Переименование и перемещение файлов из репозитория
...........253
Просмотр журнала коммитов
.....................................255
Восстановление старых изменений
................................256
Отмена несохраненных локальных изменений
....................256
Деиндексирование проиндексированного файла
..................257
Отмена последних коммитов
..................................257
Возврат к конкретному коммиту для отдельного файла
.............258
Перезапись истории коммитов
.................................259
GitHub и команда git push
........................................260
Отправка существующего репозитория на GitHub
.................261
Клонирование существующего репозитория GitHub
................262
Итоги
........................................................262
Глава 13.Измерение быстродействия и анализ сложности алгоритмов
.....264
Модуль timeit
..................................................265
Профилировщик cProfile
.........................................267
Анализ алгоритмов с использованием нотации «O-большое»
...........269
Порядки нотации «О-большое»
...................................270
Книжная полка как метафора порядков «О-большое»
..............271
«О-большое» как оценка худшего сценария
......................275
Определение порядка сложности нотации «О-большое» вашего кода
....277
Почему низкие порядки и коэффициенты не важны
.................279
Примеры анализа «О-большое»
...............................280
Порядок «О-большое» для часто используемых функций
............283
Моментальный анализ сложности
..............................285
«О-большое» не имеет значения при малых n… а значения n обычно малы
...............................................286
Итоги
........................................................286
Оглавление
15
Глава 14.Проекты для тренировки
..................................288
Головоломка «Ханойская башня»
..................................289
Вывод результатов
...........................................289
Исходный код
..............................................291
Написание кода
............................................293
Игра «Четыре в ряд»
............................................301
Вывод результатов
...........................................301
Исходный код
..............................................302
Написание кода
............................................305
Итоги
........................................................314
ЧАСТЬ III
ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ PYTHON
Глава 15. Объектно-ориентированное программирование и классы
.......316
Аналогия из реального мира: заполнение форм
......................317
Создание объектов на базе классов
...............................319
Создание простого класса: WizCoin
...............................320
Методы, __init__() и self
.......................................322
Атрибуты
..................................................323
Приватные атрибуты и приватные методы
........................324
Функция type() и атрибут __qualname__
............................326
Примеры программирования с применением ООП и без него:
«Крестики-нолики»
.............................................327
Трудности проектирования классов для проектов реального мира
.......333
Итоги
........................................................334
Глава 16.Объектно-ориентированное программирование и наследование
...................................................335
Как работает наследование
......................................335
Переопределение методов
....................................338
Функция super()
.............................................340
Предпочитайте композицию наследованию
......................342
Обратная сторона наследования
...............................343
16
Оглавление
Функции isinstance() и issubclass()
..................................346
Методы классов
................................................347
Атрибуты классов
..............................................349
Статические методы
............................................350
Когда использовать объектно-ориентированные статические средства и средства уровня классов
.......................................350
Термины объектно-ориентированного программирования
..............351
Инкапсуляция
..............................................351
Полиморфизм
..............................................351
Когда наследование не используется
...............................352
Множественное наследование
....................................353
Порядок разрешения методов
....................................354
Итоги
........................................................356
Глава 17.ООП в Python: свойства и dunder-методы
.....................358
Свойства
.....................................................358
Преобразование атрибута в свойство
...........................359
Использование методов setter для проверки данных
................362
Свойства, доступные только для чтения
..........................364
Когда использовать свойства
..................................365
Dunder-методы Python
...........................................366
Dunder-методы строкового представления
........................366
Числовые dunder-методы
.....................................369
Отраженные числовые dunder-методы
...........................373
Dunder-методы присваивания на месте (in-place)
..................375
Dunder-методы сравнения
.....................................377
Итоги
........................................................382
Моему племяннику Джеку
Об авторе
Эл Свейгарт — разработчик и автор технической литературы, живет в Сиэтле.
Python — его любимый язык программирования, он разработал для Python несколь- ко модулей с открытым кодом. Его другие книги доступны бесплатно на условиях лицензии Creative Commons на его веб-сайте https://www.inventwithpython.com/.
Кошка автора книги — Зофи — весит 5 килограммов.
О техническом редакторе
Кеннет Лав (Kenneth Love) — программист, преподаватель и организатор конфе- ренций. Он — соавтор Django и член сообщества PSF (Python Software Foundation).
В настоящее время работает техническим руководителем и инженером-програм- мистом в O’Reilly Media.
Благодарности
Несправедливо, что на обложке этой книги стоит только мое имя. Эта книга никогда не появилась бы без поддержки многих людей. Хочу поблагодарить своего издателя,
Билла Поллока (Bill Pollock), а также всех моих редакторов: Фрэнсис Со (Frances
Saux), Энни Чой (Annie Choi), Мег Снеерингер (Meg Sneeringer) и Яна Кэша (Jan
Cash). Также хочу сказать спасибо редактору Морин Форис (Maureen Forys), вы- пускающему редактору Энн Мэри Уокер (Anne Marie Walker) и исполнительному редактору No Starch Press Барбаре Йен (Barbara Yien). Я очень признателен Джошу
Эллингсону (Josh Ellingson) за еще одну замечательную иллюстрацию для обложки.
Моя благодарность техническому редактору Кеннету Лаву (Kenneth Love) и всем остальным замечательным друзьям, с которыми я познакомился в сообществе
Python.
Введение
Hello, world! В конце 1990-х я только начинал программи- ровать, мечтал стать настоящим хакером и листал последние выпуски журнала «2600: The Hacker Quarterly». Однажды я набрался смелости и посетил ежемесячное сборище про- граммистов в моем городе; меня поразило, насколько знающими казались все окружающие. (Позднее я понял, что у многих само- уверенности было больше, чем реальных знаний.) Весь вечер я поддакивал тому, что говорили другие, стараясь не отставать от них. Покидая встречу, я твердо возна- мерился посвятить все свободное время изучению компьютеров, программирования и сетевой безопасности, чтобы достойно поучаствовать во встрече в следующем месяце.
Но на следующем сборище я все так же кивал и чувствовал себя болваном по срав- нению со всеми остальными. Я снова решил: надо учиться, чтобы стать «достаточно умным» и не отставать от окружающих. Месяц за месяцем я корпел над книгами, но всегда чувствовал себя отстающим. Я начал осознавать, насколько необъятна эта область, и беспокоился, что никогда не буду знать достаточно.
Я знал о программировании больше, чем мои друзья, но безусловно недостаточно для того, чтобы получить должность разработчика. В 1990-е годы Google, YouTube и «Википедии» еще не было. Но даже если бы эти ресурсы были доступны, мне было бы сложно пользоваться ими: я просто не знал, что изучать дальше. Но все это время я учился писать программу «Hello, world!» на разных языках программи- рования и по-прежнему осознавал, что толком не двигаюсь вперед. Я не понимал, как подняться выше базового уровня.
Разработка вовсе не ограничивается циклами и функциями. Но после того, как вы ознакомитесь со вводным курсом или прочитаете книгу по программированию
20
Введение начального уровня, поиск новой информации приведет вас к очередному учебнику, посвященному написанию «Hello, world!». Программисты часто называют этот период «пустыней отчаяния»: время, когда вы бесцельно блуждаете по разным учебным материалам, ощущая, что топчетесь на месте. Вы превзошли начальный уровень, но вам еще не хватает опыта для более сложных тем.
Блуждающие в пустыне испытывают сильный «синдром самозванца». Вы не чув- ствуете себя «настоящим» программистом и не умеете создавать такой код, как
«настоящие» программисты. Я писал эту книгу именно для такой аудитории. Если вы изучили основы Python, моя книга поможет вам стать более эффективным раз- работчиком и преодолеть отчаяние.
Для кого написана эта книга и почему
Книга предназначена для читателей, которые изучили базовый курс языка Python и хотят узнать больше. Базовые знания могут дать моя предыдущая книга «Automate the Boring Stuff with Python» (No Starch Press, 2019)
1
, книга Эрика Мэтиза (Eric
Matthes) «Python Crash Course» (No Starch Press, 2019)
2
или какой-нибудь сетевой курс.
Возможно, эти учебники вызвали у вас интерес к программированию, но вам все равно не хватает знаний. Если вы чувствуете, что еще не достигли профессиональ- ного уровня, и не знаете, как его достичь, то эта книга написана для вас. А может быть, вы знакомы с другим языком программирования, а теперь хотите переклю- читься на Python и его экосистему без изучения основ уровня «Hello, world!».
В таком случае вам наверняка не захочется читать сотни страниц с объяснением базового синтаксиса; вместо этого достаточно просмотреть статью «Learn Python in
Y Minutes» (https://learnxinyminutes.com/docs/python/) или страницу Эрика Мэтиза
(Eric Matthes) «Python Crash Course — Cheat Sheet» (https://ehmatthes.github.io/
pcc/cheatsheets/README.html).
О книге
Книга более глубоко знакомит вас с синтаксисом Python, но не ограничивается этим. Я рассказываю о командной строке и средствах командной строки, исполь- зуемых профессиональными разработчиками: системах форматирования кода, статических анализаторах и системах контроля версий. Я объясняю, какие аспек- ты делают ваш код более удобочитаемым и как писать более чистый и понятный
1
Свейгарт Э. Автоматизация рутинных задач с помощью Python.
2
Мэтиз Э. Изучаем Python: программирование игр, визуализация данных, веб-приложения.
3-е изд. — СПб.: Питер, 2017.
О книге
21
код. В книге представлен ряд программ, чтобы вы увидели применение этих принципов в реальном коде. И хотя это не учебник компьютерной теории, здесь также рассматривается анализ алгоритмов в нотации «О-большое» и объектно- ориентированная парадигма.
Никакая книга не превратит вас в профессионального разработчика, но я надеюсь, что мой труд расширит ваши познания в этой области. Я представлю некоторые темы, которые обычно познаются лишь на опыте, полученном тяжелой практикой.
Прочитав эту книгу, вы приобретете прочную основу, которая позволит вам с боль- шей уверенностью браться за новые задачи.
И хотя я рекомендую читать главы этой книги последовательно, ничто не мешает вам переходить к тем главам, которые вас интересуют больше.
Часть I. Первые шаги
Глава 1. Обработка ошибок и обращение за помощью. Вы узнаете, как эффективно задавать вопросы и самостоятельно находить ответы. Также вы научитесь читать сообщения об ошибках и освоите этикет обращения за помощью в интернете.
Глава 2. Подготовка среды и командная строка. О том, как работать в режи- ме командной строки и как настроить среду разработки и переменную PATH.
Часть II. Передовые практики, инструменты и методы
Глава 3. Форматирование кода при помощи Black. В этой главе рассматри- вается руководство по стилю PEP 8 и форматирование кода для улучшения его удобочитаемости. Вы узнаете, как автоматизировать этот процесс при помощи инструмента форматирования кода Black.
Глава 4. Выбор понятных имен. Правила выбора имен переменных и функ- ций для улучшения удобочитаемости кода.
Глава 5. Поиск запахов в коде. Некоторые потенциальные тревожные при- знаки, которые могут указывать на наличие ошибок в вашем коде.
Глава 6. Написание питонического кода. Некоторые способы создания идиоматического кода Python и признаки, присущие питоническому коду.
Глава 7. Жаргон программистов. Технические термины, используемые в области программирования, и термины, которые нередко вызывают путаницу.
Глава 8. Часто встречающиеся ловушки Python. Типичные источники не- доразумений и ошибок в языке Python, способы их исправления и стратегии программирования, которых лучше избегать.
22
Введение
Глава 9. Экзотические странности Python. Некоторые экзотические особен- ности языка Python, включая интернирование строк и пасхалки, которые могут остаться незамеченными. Разобравшись с тем, почему некоторые типы данных и операторы ведут себя неожиданным образом, вы начнете лучше понимать, как работает Python.
Глава 10. Написание эффективных функций. Глава рассказывает, как струк- турировать ваши функции для достижения наибольшей практичности и удо- бочитаемости. Вы узнаете о синтаксисе аргументов
*
и
**
, о достоинствах и недостатках больших и малых функций и средствах функционального программирования — таких как лямбда-функции.
Глава 11. Комментарии, doc-строки и аннотации типов. Вы узнаете, на- сколько важны части вашей программы, не содержащие программного кода, и каково их влияние на сопровождение, с какой частотой следует писать комментарии и doc-строки и как сделать их более содержательными. Также в главе обсуждаются аннотации типов и использование статических анали- заторов (таких как MyPy) для выявления ошибок.
Глава 12. Git и организация программных проектов. Система контроля вер- сий Git предназначена для записи истории изменений, вносимых в исходный код, и восстановления предыдущих версий работы или определения точки, в которой ошибка появилась впервые. Также я немного расскажу о структу- рировании файлов с кодом ваших проектов с использованием программы
Cookiecutter.
Глава 13. Измерение быстродействия и анализ сложности алгоритмов.
В этой главе рассказано, как объективно измерить скорость выполнения вашего кода при помощи модулей timeit и cProfile
. Кроме того, мы рас- смотрим нотацию «О-большое» и способы прогнозирования снижения быстродействия кода с ростом объема обрабатываемых данных.
1 2 3 4 5 6 7 8 9 ... 40