RUSSIAN

Python. Лучшие практики и инструменты

Book information

Publisher
Питер
Year
2021
ISBN
9785446115891, 9781789808896
Language
russian
Format
PDF
Filesize
9 MB (9213621 bytes)
Series
Библиотека программиста
Edition
3
Pages
560\560
Time added
2021-07-17 09:03:01

Description

Python — это динамический язык программирования, используемый в самых разных предметных областях. Хотя писать код на Python просто, гораздо сложнее сделать этот код удобочитаемым, пригодным для многократного использования и легким в поддержке. Третье издание «Python. Лучшие практики и инструменты» даст вам инструменты для эффективного решения любой задачи разработки и сопровождения софта. Авторы начинают с рассказа о новых возможностях Python 3.7 и продвинутых аспектах синтаксиса Python. Продолжают советами по реализации популярных парадигм, в том числе объектно-ориентированного, функционального и событийно-ориентированного программирования. Также авторы рассказывают о наилучших практиках именования, о том, какими способами можно автоматизировать развертывание программ на удаленных серверах. Вы узнаете, как создавать полезные расширения для Python на C, C++, Cython и CFFI. О создателях книги Об авторах О научном редакторе Предисловие Для кого эта книга Что мы рассмотрим Как получить максимум от этой книги Скачивание файлов с примерами кода Скачивание цветных изображений Условные обозначения От издательства Часть I. Перед началом работы Глава 1. Текущее состояние Python Технические требования Где мы находимся и куда движемся Почему и как изменился язык Python Как не отставать от изменений в документации PEP Внедрение Python 3 на момент написания этой книги Основные различия между Python 3 и Python 2 Почему это должно нас волновать Основные синтаксические различия и распространенные ошибки Популярные инструменты и методы поддержания кросс-версионной совместимости Не только CPython Почему это должно нас волновать Stackless Python Jython IronPython PyPy MicroPython Полезные ресурсы Резюме Глава 2. Современные среды разработки на Python Технические требования Установка дополнительных пакетов Python с использованием pip Изоляция сред выполнения venv — виртуальное окружение Python Изоляция среды на уровне системы Виртуальные среды разработки использующие Vagrant Виртуальные среды использующие Docker Популярные инструменты повышения производительности Пользовательские оболочки Python — ipython bpython ptpython и т. д. Включение оболочек в собственные скрипты и программы Интерактивные отладчики Резюме Часть II. Ремесло Python Глава 3. Современные элементы синтаксиса — ниже уровня класса Технические требования Встроенные типы языка Python Строки и байты Контейнеры Дополнительные типы данных и контейнеры Специализированные контейнеры данных из модуля collections Символическое перечисление с модулем enum Расширенный синтаксис Итераторы Генераторы и операторы yield Декораторы Менеджеры контекста и оператор with Функционально-стилевые особенности Python Что такое функциональное программирование Лямбда-функции map() filter() и reduce() Частичные объекты и функция partial() Выражения генераторов Аннотации функций и переменных Общий синтаксис Возможные способы применения Статическая проверка типа с помощью mypy Иные элементы синтаксиса о которых вы возможно не знаете Оператор for… else… Именованные аргументы Резюме Глава 4. Современные элементы синтаксиса — выше уровня класса Технические требования Протоколы в языке Python — методы и атрибуты с двойным подчеркиванием Сокращение шаблонного кода с помощью классов данных Создание подклассов встроенных типов ПРМ и доступ к методам из суперклассов Классы старого стиля и суперклассы в Python 2 Понимание ПРМ в Python Ловушки суперкласса Практические рекомендации Паттерны доступа к расширенным атрибутам Дескрипторы Свойства Слоты Резюме Глава 5. Элементы метапрограммирования Технические требования Что такое метапрограммирование Декораторы как средство метапрограммирования Декораторы класса Использование __new__() для переопределения процесса создания экземпляра Метаклассы Генерация кода Резюме Глава 6. Как выбирать имена Технические требования PEP 8 и практические рекомендации по именованию Почему и когда надо соблюдать PEP 8 За пределами PEP 8 — правила стиля внутри команды Стили именования Переменные Руководство по именованию Использование префиксов is/has в булевых элементах Использование множественного числа в именах коллекций Использование явных имен для словарей Избегайте встроенных и избыточных имен Избегайте уже существующих имен Практические рекомендации по работе с аргументами Сборка аргументов по итеративному принципу Доверие к аргументам и тестам Осторожность при работе с магическими аргументами *args и **kwargs Имена классов Имена модулей и пакетов Полезные инструменты Pylint pycodestyle и flake8 Резюме Глава 7. Создаем пакеты Технические требования Создание пакета Странности в нынешних инструментах создания пакетов в Python Конфигурация проекта Пользовательская команда setup Работа с пакетами в процессе разработки Пакеты пространства имен Почему это полезно Загрузка пакета PyPI — каталог пакетов Python Пакеты с исходным кодом и пакеты сборок Исполняемые файлы Когда бывают полезны исполняемые файлы Популярные инструменты Безопасность кода Python в исполняемых пакетах Резюме Глава 8. Развертывание кода Технические требования Двенадцатифакторное приложение Различные подходы к автоматизации развертывания Использование Fabric для автоматизации развертывания Ваш собственный каталог пакетов или зеркало каталогов Зеркала PyPI Объединение дополнительных ресурсов с пакетом Python Общие соглашения и практики Иерархия файловой системы Изоляция Использование инструментов мониторинга процессов Запуск кода приложения в пространстве пользователя Использование обратного HTTP-прокси Корректная перезагрузка процессов Контрольно-проверочный код и мониторинг Ошибки журнала — Sentry/Raven Метрики систем мониторинга и приложений Работа с журнальными приложениями Резюме Глава 9. Расширения Python на других языках Технические требования Различия между языками C и C++ Необходимость в использовании расширений Повышение производительности критических фрагментов кода Интеграция существующего кода написанного на разных языках Интеграция сторонних динамических библиотек Создание пользовательских типов данных Написание расширений Расширения на чистом языке C Написание расширений на Cython Проблемы с использованием расширений Дополнительная сложность Отладка Взаимодействие с динамическими библиотеками без расширений Модуль ctypes CFFI Резюме Часть III. Качество а не количество Глава 10. Управление кодом Технические требования Работа с системой управления версиями Централизованные системы Распределенные системы Распределенные стратегии Централизованность или распределенность По возможности используйте Git Рабочий процесс GitFlow и GitHub Flow Настройка процесса непрерывной разработки Непрерывная интеграция Непрерывная доставка Непрерывное развертывание Популярные инструменты для непрерывной интеграции Выбор правильного инструмента и распространенные ошибки Резюме Глава 11. Документирование проекта Технические требования Семь правил технической документации Пишите в два этапа Ориентируйтесь на читателя Упрощайте стиль Ограничивайте объем информации Используйте реалистичные примеры кода Пишите по минимуму но достаточно Используйте шаблоны Документация как код Использование строк документации в Python Популярные языки разметки и стилей для документации Популярные генераторы документации для библиотек Python Sphinx MkDocs Сборка документации и непрерывная интеграция Документирование веб-API Документация как прототип API с API Blueprint Самодокументирующиеся API со Swagger/OpenAPI Создание хорошо организованной системы документации Создание портфеля документации Ваш собственный портфель документации Создание шаблона документации Шаблон для автора Шаблон для читателя Резюме Глава 12. Разработка на основе тестирования Технические требования Я не тестирую Три простых шага разработки на основе тестирования О каких тестах речь Стандартные инструменты тестирования в Python Я тестирую Ловушки модуля unittest Альтернативы модулю unittest Охват тестирования Подделки и болванки Совместимость среды тестирования и зависимостей Разработка на основе документации Резюме Часть IV. Жажда скорости Глава 13. Оптимизация — принципы и методы профилирования Технические требования Три правила оптимизации Сначала — функционал Работа с точки зрения пользователя Поддержание читабельности и удобства сопровождения Стратегии оптимизации Пробуем свалить вину на другого Масштабирование оборудования Написание теста скорости Поиск узких мест Профилирование использования ЦП Профилирование использования памяти Профилирование использования сети Резюме Глава 14. Эффективные методы оптимизации Технические требования Определение сложности Цикломатическая сложность Нотация «О большое» Уменьшение сложности через выбор подходящей структуры данных Поиск в списке Использование модуля collections Тип deque Тип defaultdict Тип namedtuple Использование архитектурных компромиссов Использование эвристических алгоритмов или приближенных вычислений Применение очереди задач и отложенная обработка Использование вероятностной структуры данных Кэширование Детерминированное кэширование Недетерминированное кэширование Сервисы кэширования Резюме Глава 15. Многозадачность Технические требования Зачем нужна многозадачность Многопоточность Что такое многопоточность Как Python работает с потоками Когда использовать многопоточность Многопроцессорная обработка Встроенный модуль multiprocessing Асинхронное программирование Кооперативная многозадачность и асинхронный ввод/вывод Ключевые слова async и await Модуль asyncio в старых версиях Python Практический пример асинхронного программирования Интеграция синхронного кода с помощью фьючерсов async Резюме Часть V. Техническая архитектура Глава 16. Событийно-ориентированное и сигнальное программирование Технические требования Что такое событийно-ориентированное программирование Событийно-ориентированный != асинхронный Событийно-ориентированное программирование в GUI Событийно-ориентированная связь Различные стили событийно-ориентированного программирования Стиль на основе обратных вызовов Стиль на основе субъекта Тематический стиль Событийно-ориентированные архитектуры Очереди событий и сообщений Резюме Глава 17. Полезные паттерны проектирования Технические требования Порождающие паттерны Синглтон Структурные паттерны Адаптер Заместитель Фасад Поведенческие паттерны Наблюдатель Посетитель Шаблонный метод Резюме Приложение. reStructuredText Primer reStructuredText Структура раздела Списки Форматирование внутри строк Блок литералов Ссылки

Similar books

Методология научных исследований и прикладной аналитики: Учебник. Изд. 5-е, дополн. и перераб. В 2 т. Т.2: Научные исследования: Мастерство и искусство научного мышления и научной работы / Methodology of Scientific Research and Practical Analytics: A Textbook: Fifth Edition. In two volumes. Vol.2: Scientific research: Art of scientific thinking and scientific work / Méthodologie de la recherche scientifique et de l’analytique appliquée: Manuel: Cinquième édition. En 2 tomes. T.2: Recherches scientifiques: Art de la pensée scientifique et du travail scientifique

2025 · PDF

Методы и понятия философии искусства: практикум : уровень подготовки кадров высшей квалификации: ассиснтурв-стажировка : специальности: 54.09.03 "Искусство дизайна (по видам)", 54.09.02 "Мастерство декоративно-прикладного искусства и народных промыслов (по видам)" : укрупненная группа специальностей: 54.00.00 "Изобразительное и прикладные виды искусств" : квалификация выпускника: "Преподаватель творческих дисциплин в высшей школе. Дизайнер", "Преподаватель творческих дисциплин в высшей школе. Художник декоративно-прикладного искусства" : форма обучения: очная

2022 · PDF

Разработка графического интерфейса пользователя информационной системы с использованием библиотеки QT: учебное пособие для студентов 1 курса направлений подготовки 09.04.02 "Информационные системы и технологии", 27.04.03 "Системный анализ и управление" очной формы обучения, 2 курса направления подготовки 10.05.03 "Информационная безопасность автоматизированных систем" очной формы обучения и 3 курса направления подготовки 09.03.02 "Информационные системы и технологии" очной и заочной форм обучения : учебное электронное издание

2021 · PDF