ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.12.2023
Просмотров: 361
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Э Л С В Е Й Г А Р Т
2022
PYTHON
Ч И С Т Ы Й К О Д
Д Л Я П Р О Д О Л Ж А Ю Щ И Х
Э Л С В Е Й Г А Р Т
2022
PYTHON
Ч И С Т Ы Й К О Д
Д Л Я П Р О Д О Л Ж А Ю Щ И Х
ББК
32.973.2-018
УДК
004.41
С24
Свейгарт Эл
С24 Python. Чистый код для продолжающих. — СПб.: Питер, 2022. — 384 с.: ил. —
(Серия «Библиотека программиста»).
ISBN 978-5-4461-1852-6
Вы прошли обучающий курс программирования на Python или прочли несколько книг для начинающих.
Что дальше? Как подняться над базовым уровнем, превратиться в крутого разработчика?
«Python. Чистый код для продолжающих» — это не набор полезных советов и подсказок по написанию чистого кода. Вы узнаете о командной строке и других инструментах профессионального разработчика: сред- ствах форматирования кода, статических анализаторах и контроле версий. Вы научитесь настраивать среду разработки, давать имена переменным и функциям, делающие код удобочитаемым, грамотно комментировать и документировать ПО, оценивать быстродействие программ и сложность алгоритмов, познакомитесь с ООП.
Такие навыки поднимут вашу ценность как программиста не только в Python, но и в любом другом языке.
Ни одна книга не заменит реального опыта работы и не превратит вас из новичка в профессионала.
Но «Чистый код для продолжающих» проведет вас чуть дальше по этому пути: вы научитесь создавать чистый, грамотный, читабельный, легко отлаживаемый код, который можно будет назвать истинно питоническим.
16+
(В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.)
ББК 32.973.2-018
УДК 004.41
Права на издание получены по соглашению с No Starch Press. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как на- дежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги. Издательство не несет ответственности за доступность материалов, ссылки на которые вы можете найти в этой книге. На момент подготовки книги к изданию все ссылки на интернет- ресурсы были действующими.
ISBN 978-1593279660 англ.
© 2021 by Al Sweigart. Beyond the Basic Stuff with Python: Best
Practices for Writing Clean Code, ISBN 9781593279660,
published by No Starch Press Inc. 245 8th Street, San Francisco,
California United States 94103.
Russian edition published under license by No Starch Press Inc.
ISBN 978-5-4461-1852-6
© Перевод на русский язык ООО «Прогресс книга», 2022
© Издание на русском языке, оформление ООО «Прогресс книга», 2022
© Серия «Библиотека программиста», 2022
Краткое содержание
Об авторе
........................................................18
О техническом редакторе
...........................................18
Благодарности
....................................................18
Введение
.........................................................19
ЧАСТЬ I
ПЕРВЫЕ ШАГИ
Глава 1. Обработка ошибок и обращение за помощью
..................26
Глава 2. Подготовка среды и командная строка
.........................40
ЧАСТЬ II
ПЕРЕДОВЫЕ ПРАКТИКИ, ИНСТРУМЕНТЫ И МЕТОДЫ
Глава 3. Форматирование кода при помощи Black
......................70
Глава 4. Выбор понятных имен
.......................................85
Глава 5. Поиск запахов в коде
.......................................95
Глава 6. Написание питонического кода
..............................113
Глава 7. Жаргон программистов
....................................135
Глава 8. Часто встречающиеся ловушки Python
........................164
Глава 9. Экзотические странности Python
.............................185
Глава 10.Написание эффективных функций
...........................194
Глава 11.Комментарии, doc-строки и аннотации типов
..................216
6
Краткое содержание
Глава 12. Git и организация программных проектов
....................235
Глава 13.Измерение быстродействия и анализ сложности алгоритмов
.....264
Глава 14.Проекты для тренировки
..................................288
ЧАСТЬ III
ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ PYTHON
Глава 15. Объектно-ориентированное программирование и классы
.......316
Глава 16. Объектно-ориентированное программирование и наследование
.335
Глава 17.ООП в Python: свойства и dunder-методы
.....................358
Оглавление
Об авторе
......................................................18
О техническом редакторе
.......................................18
Благодарности
..................................................18
Введение
.......................................................19
Для кого написана эта книга и почему
...............................20
О книге
........................................................20
Часть I. Первые шаги
..........................................21
Часть II. Передовые практики, инструменты и методы
................21
Часть III. Объектно-ориентированный Python
......................22
Путешествие в мир программирования
..............................23
ЧАСТЬ I
ПЕРВЫЕ ШАГИ
Глава 1. Обработка ошибок и обращение за помощью
..................26
Как понять сообщения об ошибках Python
............................26
Анализ трассировки
..........................................27
Поиск сообщений об ошибках
..................................30
Предотвращение ошибок при помощи статического анализатора
........31
Как обратиться за помощью по программированию
....................33
Избегайте лишних разговоров, предоставляйте информацию заранее
.34
Формулируйте свой вопрос как вопрос
...........................34
Задавайте вопросы на подходящем веб-сайте
.....................34
Включите краткое описание вопроса в заголовок
...................34
Объясните, что должен делать ваш код
...........................35
Включите полное сообщение об ошибке
..........................36
Приведите полный код
........................................36
Правильно отформатируйте свой код
............................36
8
Оглавление
Сообщите, что вы уже пытались сделать
..........................37
Опишите свою рабочую конфигурацию
..........................37
Примеры вопросов
..............................................38
Итоги
.........................................................39
Глава 2.Подготовка среды и командная строка
.........................40
Файловая система
...............................................40
Пути в Python
................................................41
Домашний каталог
...........................................42
Текущий рабочий каталог
......................................43
Абсолютные и относительные пути
...............................43
Программы и процессы
...........................................44
Командная строка
...............................................45
Открытие окна терминала
.....................................46
Запуск программ из командной строки
...........................47
Аргументы командной строки
...................................48
Выполнение кода Python из командной строки с ключом -c
...........50
Выполнение программ Python из командной строки
.................50
Запуск программы py.exe
......................................50
Выполнение команд из программы Python
.........................51
Сокращение объема вводимого текста при помощи автозавершения
...51
Просмотр истории команд
.....................................52
Часто используемые команды
..................................53
Переменные среды и PATH
........................................60
Просмотр переменных среды
...................................61
Переменная среды PATH
.......................................62
Изменение переменной среды PATH в командной строке
.............63
Постоянное включение папок в PATH в Windows
...................63
Постоянное включение папок в PATH в macOS и Linux
...............65
Запуск программ Python без командной строки
.......................65
Запуск программ Python в Windows
..............................66
Запуск программ Python в macOS
...............................67
Запуск программ Python в Ubuntu Linux
...........................67
Итоги
.........................................................68
Оглавление
9
ЧАСТЬ II
ПЕРЕДОВЫЕ ПРАКТИКИ, ИНСТРУМЕНТЫ И МЕТОДЫ
Глава 3. Форматирование кода при помощи Black
......................70
Как потерять друзей и настроить против себя коллег
...................70
Руководства по стилю и PEP 8
......................................71
Горизонтальные отступы
..........................................72
Использование пробелов для создания отступов
...................72
Отступы в середине строки
.....................................73
Вертикальные отступы
............................................76
Пример использования вертикальных отступов
.....................77
Рекомендации по использованию вертикальных отступов
............78
Black: бескомпромиссная система форматирования кода
...............79
Установка Black
..............................................80
Запуск Black из командной строки
...............................80
Отключение Black для отдельных частей кода
......................83
Итоги
.........................................................84
Глава 4. Выбор понятных имен
.......................................85
Схемы регистра имен
............................................86
Соглашения об именах PEP 8
......................................86
Длина имен
....................................................87
Выбирайте имена, пригодные для поиска
............................90
Избегайте шуток, каламбуров и культурных отсылок
...................91
Не заменяйте встроенные имена
...................................92
Худшие из возможных имен
.......................................93
Итоги
.........................................................93
Глава 5. Поиск запахов в коде
.......................................95
Дублирование кода
..............................................95
«Магические» числа
.............................................97
Закомментированный и мертвый код
...............................100
Отладочный вывод
..............................................101
Переменные с числовыми суффиксами
.............................102
Классы, которые должны быть функциями или модулями
...............103
10
Оглавление
Списковые включения внутри списковых включений
...................104
Пустые блоки except и плохие сообщения об ошибках
.................106
Мифы о запахах кода
...........................................107
Миф: функции должны содержать только одну команду return в самом конце
..............................................108
Миф: функции должны содержать не более одной команды try
.......108
Миф: аргументы-флаги нежелательны
...........................109
Миф: глобальные переменные нежелательны
.....................110
Миф: комментарии излишни
...................................111
Итоги
........................................................112
Глава 6.Написание питонического кода
..............................113
«Дзен Python»
..................................................113
Как полюбить значимые отступы
...................................117
Использование модуля timeit для оценки быстродействия
...............118
Неправильное использование синтаксиса
...........................120
Использование enumerate() вместо range()
.......................120
Использование команды with вместо open() и close()
...............121
Использование is для сравнения с None вместо ==
.................122
Форматирование строк
.........................................123
Использование необработанных строк, если строка содержит много символов \ (обратный слэш)
.............................123
Форматирование с использованием F-строк
......................124
Поверхностное копирование списков
..............................125
Питонические способы использования словарей
.....................126
Использование get() и setdefault() со словарями
...................127
Использование collections.defaultdict для значений по умолчанию
.....128
Использование словарей вместо команды switch
..................129
Условные выражения: «некрасивый» тернарный оператор Python
........130
Работа со значениями переменных
................................132
Сцепление операторов присваивания и сравнения
................132
Проверка того, что переменная содержит одно из нескольких значений
133
Итоги
........................................................133
Оглавление
11
Глава 7. Жаргон программистов
....................................135
Определения
..................................................135
Язык Python и интерпретатор Python
.............................136
Сборка мусора
.............................................137
Литералы
..................................................137
Ключевые слова
............................................138
Объекты, значения, экземпляры и идентичность
...................139
Элементы
..................................................143
Изменяемость и неизменяемость
...............................143
Индексы, ключи и хеш-коды
...................................146
Контейнеры, последовательности, отображения и разновидности множеств
..................................................149
Dunder-методы, или магические методы
..........................150
Модули и пакеты
............................................150
Вызываемые объекты и первоклассные объекты
...................151
Частые ошибки при использовании терминов
........................152
Команды и выражения
........................................152
Блок, секция и тело
..........................................153
Переменные и атрибуты
......................................154
Функции и методы
...........................................155
Итерируемые объекты и итераторы
.............................155
Синтаксические ошибки, ошибки времени выполнения и семантические ошибки
......................................157
Параметры и аргументы
......................................159
Явные и неявные преобразования типов
.........................159
Свойства и атрибуты
.........................................159
Байт-код и машинный код
.....................................160
Сценарии и программы, языки сценариев и языки программирования
..........................................161
Библиотеки, фреймворки, SDK, ядра и API
.......................161
Итоги
........................................................162
Дополнительные ресурсы
........................................163
12
Оглавление
Глава 8.Часто встречающиеся ловушки Python
........................164
Не добавляйте и не удаляйте элементы из списка в процессе перебора
...164
Не копируйте изменяемые значения без copy.copy() и copy.deepcopy()
...171
Не используйте изменяемые значения для аргументов по умолчанию
.....174
Не создавайте строки посредством конкатенации
....................176
Не рассчитывайте, что sort() выполнит сортировку по алфавиту
..........178
Не рассчитывайте на идеальную точность чисел с плавающей точкой
.....179
Не объединяйте операторы != в цепочку
............................182
Не забудьте запятую в кортежах из одного элемента
..................183
Итоги
........................................................183
Глава 9.Экзотические странности Python
.............................185
Почему 256 — это 256, а 257 — не 257
............................185
Интернирование строк
..........................................187
Фиктивные операторы инкремента и декремента в языке Python
.........188
Все или ничего
.................................................189
Логические значения как целые числа
..............................190
Сцепление разных видов операторов
..............................192
Антигравитация в Python
.........................................193
Итоги
........................................................193
Глава 10. Написание эффективных функций
...........................194
Имена функций
................................................194
Плюсы и минусы размера функций
................................195
Параметры и аргументы функций
..................................198
Аргументы по умолчанию
.....................................198
Использование * и ** для передачи аргументов функции
...........199
Использование * при создании вариадических функций
............201
Использование ** при создании вариадических функций
...........203
Использование * и ** для создания функций-оберток
..............205
Функциональное программирование
..............................206
Побочные эффекты
..........................................206
Функции высшего порядка
....................................209
Лямбда-функции
............................................209
Оглавление
13
Отображение и фильтрация со списковыми включениями
...........210
Возвращаемые значения всегда должны иметь один тип данных
.........212
Выдача исключений и возвращение кодов ошибок
....................214
Итоги
........................................................215