LibCoder

Python. К вершинам мастерства: Локаничное и эффективное программирование. 2 изд

1C Agda Python
Python. К вершинам мастерства: Локаничное и эффективное программирование. 2 изд
Дата выхода: 2022
Издательство: ДМК Пресс
Количество страниц: 898
Размер файла: 8,2 МБ
Тип файла: PDF
Добавил: LibCoder
Оглавление
Предисловие от издательства....18 Отзывы и пожелания....18 Список опечаток....18 Нарушение авторских прав....18 Об авторе....19 Колофон....19 Предисловие....20 На кого рассчитана эта книга....20 На кого эта книга не рассчитана....21 Пять книг в одной....21 Как организована эта книга....21 Практикум....23 Поговорим: мое личное мнение....24 Сопроводительный сайт: fluentpython.com....24 Графические выделения....24 О примерах кода....25 Как с нами связаться....25 Благодарности....26 Благодарности к первому изданию....27 Часть I....30 Структуры данных....30 Глава 1....31 Модель данных в языке Python....31 Что нового в этой главе....32 Колода карт на Python....32 Как используются специальные методы....35 Эмуляция числовых типов....36 Строковое представление....39 Булево значение пользовательского типа....40 API коллекций....40 Сводка специальных методов....42 Почему len – не метод....44 Резюме....44 Дополнительная литература....45 Глава 2....47 Массив последовательностей....47 Что нового в этой главе....48 Общие сведения о встроенных последовательностях....48 Списковое включение и генераторные выражения....50 Списковое включение и удобочитаемость....51 Сравнение спискового включения с map и filter....52 Декартовы произведения....53 Генераторные выражения....54 Кортеж – не просто неизменяемый список....56 Кортежи как записи....56 Кортежи как неизменяемые списки....57 Сравнение методов кортежа и списка....59 Распаковка последовательностей и итерируемых объектов....60 Распаковка с помощью * в вызовах функций и литеральных последовательностях....62 Распаковка вложенных объектов....62 Сопоставление с последовательностями-образцами....63 Сопоставление с последовательностями-образцами в интерпретаторе....68 Получение среза....71 Почему в срезы и диапазоны не включается последний элемент....72 Объекты среза....72 Многомерные срезы и многоточие....73 Присваивание срезу....74 Использование + и * для последовательностей....75 Построение списка списков....75 Составное присваивание последовательностей....77 Головоломка: присваивание A += ....78 Метод list.sort и встроенная функция sorted....80 Когда список не подходит....82 Массивы....82 Представления областей памяти....85 NumPy....87 Двусторонние и другие очереди....89 Резюме....92 Дополнительная литература....93 Глава 3....98 Словари и множества....98 Что нового в этой главе....98 Современный синтаксис словарей....99 Словарные включения....99 Распаковка отображений....100 Объединение отображений оператором |....101 Сопоставление с отображением-образцом....101 Стандартный API типов отображений....104 Что значит «хешируемый»?....104 Обзор наиболее употребительных методов отображений....105 Вставка и обновление изменяемых значений....107 Автоматическая обработка отсутствующих ключей....110 defaultdict: еще один подход к обработке отсутствия ключа....110 Метод __missing__....111 Несогласованное использование __missing__ в стандартной библиотеке....113 Вариации на тему dict....114 collections.OrderedDict....114 collections.ChainMap....115 collections.Counter....116 shelve.Shelf....116 Создание подкласса UserDict вместо dict....117 Неизменяемые отображения....119 Представления словаря....120 Практические последствия внутреннего устройства класса dict....121 Теория множеств....122 Литеральные множества....124 Множественное включение....125 Практические последствия внутреннего устройства класса set....125 Операции над множествами....126 Теоретико-множественные операции над представлениями словарей....128 Резюме....130 Дополнительная литература....131 Глава 4....134 Unicode-текст и байты....134 Что нового в этой главе....135 О символах, и не только....135 Все, что нужно знать о байтах....136 Базовые кодировщики и декодировщики....139 Проблемы кодирования и декодирования....140 Обработка UnicodeEncodeError....141 Обработка UnicodeDecodeError....142 Исключение SyntaxError при загрузке модулей с неожиданной кодировкой....143 Как определить кодировку последовательности байтов....144 BOM: полезный крокозябр....145 Обработка текстовых файлов....146 Остерегайтесь кодировок по умолчанию....149 Нормализация Unicode для надежного сравнения....154 Сворачивание регистра....157 Служебные функции для сравнения нормализованного текста....157 Экстремальная «нормализация»: удаление диакритических знаков....158 Сортировка Unicode-текстов....161 Сортировка с помощью алгоритма упорядочивания Unicode....163 База данных Unicode....164 Поиск символов по имени....164 Символы, связанные с числами....166 Двухрежимный API....167 str и bytes в регулярных выражениях....167 str и bytes в функциях из модуля os....169 Резюме....169 Дополнительная литература....170 Глава 5....175 Построители классов данных....175 Что нового в этой главе....176 Обзор построителей классов данных....176 Основные возможности....178 Классические именованные кортежи....180 Типизированные именованные кортежи....183 Краткое введение в аннотации типов....184 Никаких последствий во время выполнения....184 Синтаксис аннотаций переменных....185 Семантика аннотаций переменных....185 Инспекция typing.NamedTuple....186 Инспектирование класса с декоратором dataclass....187 Еще о @dataclass....189 Опции полей....190 Постинициализация....193 Типизированные атрибуты класса....195 Инициализируемые переменные, не являющиеся полями....195 Пример использования @dataclass: запись о ресурсе из дублинского ядра....196 Класс данных как признак кода с душком....198 Класс данных как временная конструкция....200 Класс данных как промежуточное представление....200 Сопоставление с экземплярами классов – образцами....200 Простые классы-образцы....201 Именованные классы-образцы....201 Позиционные классы-образцы....203 Резюме....204 Дополнительная литература....204 Глава 6....208 Ссылки на объекты, изменяемость и повторное использование....208 Что нового в этой главе....209 Переменные – не ящики....209 Тождественность, равенство и псевдонимы....211 Выбор между == и is....212 Относительная неизменяемость кортежей....213 По умолчанию копирование поверхностное....214 Глубокое и поверхностное копирование произвольных объектов....217 Параметры функций как ссылки....218 Значения по умолчанию изменяемого типа: неудачная мысль....219 Защитное программирование при наличии изменяемых параметров....221 del и сборка мусора....223 Как Python хитрит с неизменяемыми объектами....225 Резюме....227 Дополнительная литература....228 Часть II....232 Функции как объекты....232 Глава 7....233 Функции как полноправные объекты....233 Что нового в этой главе....234 Обращение с функцией как с объектом....234 Функции высшего порядка....235 Современные альтернативы функциям map, filter и reduce....236 Анонимные функции....238 Девять видов вызываемых объектов....239 Пользовательские вызываемые типы....240 От позиционных к чисто именованным параметрам....241 Чисто позиционные параметры....243 Пакеты для функционального программирования....244 Модуль operator....244 Фиксация аргументов с помощью functools.partial....247 Резюме....249 Дополнительная литература....249 Глава 8....253 Аннотации типов в функциях....253 Что нового в этой главе....254 О постепенной типизации....254 Постепенная типизация на практике....255 Начинаем работать с Mypy....256 А теперь построже....257 Значение параметра по умолчанию....257 None в качестве значения по умолчанию....259 Типы определяются тем, какие операции они поддерживают....260 Типы, пригодные для использования в аннотациях....265 Тип Any....265 «Является подтипом» и «совместим с»....266 Простые типы и классы....268 Типы Optional и Union....268 Обобщенные коллекции....269 Типы кортежей....272 Обобщенные отображения....274 Абстрактные базовые классы....275 Тип Iterable....277 Параметризованные обобщенные типы и TypeVar....279 Статические протоколы....283 Тип Callable....287 Тип NoReturn....290 Аннотирование чисто позиционных и вариадических параметров....290 Несовершенная типизация и строгое тестирование....291 Резюме....292 Дополнительная литература....293 Глава 9....299 Декораторы и замыкания....299 Что нового в этой главе....300 Краткое введение в декораторы....300 Когда Python выполняет декораторы....301 Регистрационные декораторы....303 Правила видимости переменных....303 Замыкания....306 Объявление nonlocal....309 Логика поиска переменных....310 Реализация простого декоратора....311 Как это работает....312 Декораторы в стандартной библиотеке....313 Запоминание с помощью functools.cache....314 Использование lru_cache....316 Обобщенные функции с одиночной диспетчеризацией....317 Параметризованные декораторы....321 Параметризованный регистрационный декоратор....322 Параметризованный декоратор clock....323 Декоратор clock на основе класса....326 Резюме....327 Дополнительная литература....327 Глава 10....332 Реализация паттернов проектирования с помощью полноправных функций....332 Что нового в этой главе....333 Практический пример: переработка паттерна Стратегия....333 Классическая Стратегия....333 Функционально-ориентированная стратегия....337 Выбор наилучшей стратегии: простой подход....340 Поиск стратегий в модуле....341 Паттерн Стратегия, дополненный декоратором....342 Паттерн Команда....344 Резюме....345 Дополнительная литература....346 Часть III....350 Классы и протоколы....350 Глава 11....351 Объект в духе Python....351 Что нового в этой главе....352 Представления объекта....352 И снова класс вектора....353 Альтернативный конструктор....355 Декораторы classmethod и staticmethod....356 Форматирование при выводе....357 Хешируемый класс Vector2d....360 Поддержка позиционного сопоставления с образцом....362 Полный код класса Vector2d, версия 3....364 Закрытые и «защищенные» атрибуты в Python....367 Экономия памяти с помощью атрибута класса __slots__....369 Простое измерение экономии, достигаемой за счет __slot__....371 Проблемы при использовании __slots__....372 Переопределение атрибутов класса....373 Резюме....375 Дополнительная литература....376 Глава 12....380 Специальные методы для последовательностей....380 Что нового в этой главе....380 Vector: пользовательский тип последовательности....381 Vector, попытка № 1: совместимость с Vector2d....381 Протоколы и утиная типизация....384 Vector, попытка № 2: последовательность, допускающая срез....385 Как работает срезка....386 Метод __getitem__ с учетом срезов....387 Vector, попытка № 3: доступ к динамическим атрибутам....389 Vector, попытка № 4: хеширование и ускорение оператора ==....392 Vector, попытка № 5: форматирование....398 Резюме....405 Дополнительная литература....406 Глава 13....410 Интерфейсы, протоколы и ABC....410 Карта типизации....411 Что нового в этой главе....412 Два вида протоколов....412 Программирование уток....414 Python в поисках следов последовательностей....414 Партизанское латание как средство реализации протокола во время выполнения....416 Защитное программирование и принцип быстрого отказа....418 Гусиная типизация....420 Создание подкласса ABC....425 ABC в стандартной библиотеке....426 Определение и использование ABC....429 Синтаксические детали ABC....434 Создание подклассов ABC....434 Виртуальный подкласс Tombola....437 Использование функции register на практике....439 ABC и структурная типизация....439 Статические протоколы....441 Типизированная функция double....442 Статические протоколы, допускающие проверку во время выполнения....443 Ограничения протоколов, допускающих проверку во время выполнения....446 Поддержка статического протокола....447 Проектирование статического протокола....449 Рекомендации по проектированию протоколов....450 Расширение протокола....451 ABC из пакета numbers и числовые протоколы....452 Резюме....455 Дополнительная литература....456 Глава 14....461 Наследование: к добру или к худу....461 Что нового в этой главе....462 Функция super()....462 Сложности наследования встроенным типам....464 Множественное наследование и порядок разрешения методов....467 Классы-примеси....472 Отображения, не зависящие от регистра....472 Множественное наследование в реальном мире....474 ABC – тоже примеси....474 ThreadingMixIn и ForkingMixIn....474 Множественное наследование в Tkinter....479 Жизнь с множественным наследованием....481 Предпочитайте композицию наследованию класса....482 Разберитесь, зачем наследование используется в каждом конкретном случае....482 Определяйте интерфейсы явно с помощью ABC....482 Используйте примеси для повторного использования кода....483 Предоставляйте пользователям агрегатные классы....483 Наследуйте только классам, предназначенным для наследования....483 Воздерживайтесь от наследования конкретным классам....484 Tkinter: хороший, плохой, злой....484 Резюме....486 Дополнительная литература....487 Глава 15....491 Еще об аннотациях типов....491 Что нового в этой главе....491 Перегруженные сигнатуры....491 Перегрузка max....493 Уроки перегрузки max....497 TypedDict....497 Приведение типов....504 Чтение аннотаций типов во время выполнения....507 Проблемы с аннотациями во время выполнения....507 Как решать проблему....510 Реализация обобщенного класса....510 Основы терминологии, относящейся к обобщенным типам....512 Вариантность....513 Инвариантный разливочный автомат....513 Ковариантный разливочный автомат....515 Контравариантная урна....515 Обзор вариантности....517 Реализация обобщенного статического протокола....519 Резюме....521 Дополнительная литература....522 Глава 16....527 Перегрузка операторов....527 Что нового в этой главе....528 Основы перегрузки операторов....528 Унарные операторы....529 Перегрузка оператора сложения векторов +....532 Перегрузка оператора умножения на скаляр *....537 Использование @ как инфиксного оператора....539 Арифметические операторы – итоги....540 Операторы сравнения....541 Операторы составного присваивания....544 Резюме....548 Дополнительная литература....549 Часть IV....554 Поток управления....554 Глава 17....555 Итераторы, генераторы и классические сопрограммы....555 Что нового в этой главе....556 Последовательность слов....556 Почему последовательности итерируемы: функция iter....557 Использование iter в сочетании с Callable....559 Итерируемые объекты и итераторы....560 Классы Sentence с методом __iter__....563 Класс Sentence, попытка № 2: классический итератор....564 Не делайте итерируемый объект итератором для самого себя....565 Класс Sentence, попытка № 3: генераторная функция....566 Как работает генератор....567 Ленивые классы Sentence....569 Класс Sentence, попытка № 4: ленивый генератор....569 Класс Sentence, попытка № 5: генераторное выражение....570 Генераторные выражения: когда использовать....572 Генератор арифметической прогрессии....574 Построение арифметической прогрессии с помощью itertools....576 Генераторные функции в стандартной библиотеке....577 Функции редуцирования итерируемого объекта....587 yield from и субгенераторы....589 Изобретаем chain заново....590 Обход дерева....591 Обобщенные итерируемые типы....595 Классические сопрограммы....596 Пример: сопрограмма для вычисления накопительного среднего....598 Возврат значения из сопрограммы....600 Аннотации обобщенных типов для классических сопрограмм....604 Резюме....606 Дополнительная литература....606 Глава 18....611 Блоки with, match и else....611 Что нового в этой главе....612 Контекстные менеджеры и блоки with....612 Утилиты contextlib....616 Использование @contextmanager....617 Сопоставление с образцом в lis.py: развернутый пример....621 Синтаксис Scheme....621 Предложения импорта и типы....622 Синтаксический анализатор....623 Класс Environment....625 Цикл REPL....627 Вычислитель....628 Procedure: класс, реализующий замыкание....635 Использование OR-образцов....636 Делай то, потом это: блоки else вне if....637 Резюме....639 Дополнительная литература....640 Глава 19....645 Модели конкурентности в Python....645 Что нового в этой главе....646 Общая картина....646 Немного терминологии....647 Процессы, потоки и знаменитая блокировка GIL в Python ....649 Конкурентная программа Hello World....651 Анимированный индикатор с потоками....651 Индикатор с процессами....654 Индикатор с сопрограммами....655 Сравнение супервизоров....659 Истинное влияние GIL....661 Проверка знаний....661 Доморощенный пул процессов....664 Решение на основе процессов....665 Интерпретация времени работы....666 Код проверки на простоту для многоядерной машины....667 Эксперименты с большим и меньшим числом процессов....670 Не решение на основе потоков....671 Python в многоядерном мире....672 Системное администрирование....673 Наука о данных....674 Веб-разработка на стороне сервера и на мобильных устройствах....675 WSGI-серверы приложений....677 Распределенные очереди задач....679 Резюме....680 Дополнительная литература....681 Конкурентность с применением потоков и процессов....681 GIL....683 Конкурентность за пределами стандартной библиотеки....683 Конкурентность и масштабируемость за пределами Python....685 Глава 20....690 Конкурентные исполнители....690 Что нового в этой главе....690 Конкурентная загрузка из веба....691 Скрипт последовательной загрузки....693 Загрузка с применением библиотеки concurrent.futures....695 Где находятся будущие объекты?....697 Запуск процессов с помощью concurrent.futures....700 И снова о проверке на простоту на многоядерной машине....700 Эксперименты с Executor.map....703 Загрузка с индикацией хода выполнения и обработкой ошибок....706 Обработка ошибок во flags2-примерах....710 Использование futures.as_completed....712 Резюме....715 Дополнительная литература....715 Глава 21....718 Асинхронное программирование....718 Что нового в этой главе....719 Несколько определений....719 Пример использования asyncio: проверка доменных имен....720 Предложенный Гвидо способ чтения асинхронного кода....722 Новая концепция: объекты, допускающие ожидание....723 Загрузка файлов с помощью asyncio и HTTPX....724 Секрет платформенных сопрограмм: скромные генераторы....726 Проблема «все или ничего»....727 Асинхронные контекстные менеджеры....728 Улучшение асинхронного загрузчика....729 Использование asyncio.as_completed и потока....730 Регулирование темпа запросов с помощью семафора....732 Отправка нескольких запросов при каждой загрузке....735 Делегирование задач исполнителям....738 Написание асинхронных серверов....739 Веб-служба FastAPI....741 Асинхронный TCP-сервер....745 Асинхронные итераторы и итерируемые объекты....750 Асинхронные генераторные функции....751 Асинхронные включения и асинхронные генераторные выражения....757 async за пределами asyncio: Curio....759 Аннотации типов для асинхронных объектов....762 Как работает и как не работает асинхронность....763 Круги, разбегающиеся вокруг блокирующих вызовов....763 Миф о системах, ограниченных вводом-выводом....764 Как не попасть в ловушку счетных функций....764 Резюме....765 Дополнительная литература....766 Часть V....770 Метапрограммирование....770 Глава 22....771 Динамические атрибуты и свойства....771 Что нового в этой главе....771 Применение динамических атрибутов для обработки данных....772 Исследование JSON-подобных данных с динамическими атрибутами....774 Проблема недопустимого имени атрибута....777 Гибкое создание объектов с помощью метода __new__....778 Вычисляемые свойства....780 Шаг 1: создание управляемого данными атрибута....781 Шаг 2: выборка связанных записей с помощью свойств....783 Шаг 3: переопределение существующего атрибута свойством....786 Шаг 4: кеширование свойств на заказ....787 Шаг 5: кеширование свойств с помощью functools....788 Использование свойств для контроля атрибутов....790 LineItem, попытка № 1: класс строки заказа....790 LineItem, попытка № 2: контролирующее свойство....791 Правильный взгляд на свойства....793 Свойства переопределяют атрибуты экземпляра....794 Документирование свойств....796 Программирование фабрики свойств....797 Удаление атрибутов....799 Важные атрибуты и функции для работы с атрибутами....801 Специальные атрибуты, влияющие на обработку атрибутов....801 Встроенные функции для работы с атрибутами....802 Специальные методы для работы с атрибутами....803 Резюме....804 Дополнительная литература....805 Глава 23....809 Дескрипторы атрибутов....809 Что нового в этой главе....809 Пример дескриптора: проверка значений атрибутов....810 LineItem попытка № 3: простой дескриптор....810 LineItem попытка № 4: автоматическое генерирование имен атрибутов хранения....815 LineItem попытка № 5: новый тип дескриптора....817 Переопределяющие и непереопределяющие дескрипторы....819 Переопределяющие дескрипторы....821 Переопределяющий дескриптор без __get__....822 Непереопределяющий дескриптор....823 Перезаписывание дескриптора в классе....824 Методы являются дескрипторами....825 Советы по использованию дескрипторов....827 Строка документации дескриптора и перехват удаления....828 Резюме....830 Дополнительная литература....830 Глава 24....833 Метапрограммирование классов....833 Что нового в этой главе....834 Классы как объекты....834 type: встроенная фабрика классов....835 Функция-фабрика классов....836 Введение в __init_subclass__....839 Почему __init_subclass__ не может конфигурировать __slots__....845 Дополнение класса с помощью декоратора класса....846 Что когда происходит: этап импорта и этап выполнения....848 Демонстрация работы интерпретатора....849 Основы метаклассов....853 Как метакласс настраивает класс....855 Элегантный пример метакласса....856 Демонстрация работы метакласса....859 Реализация Checked с помощью метакласса....863 Метаклассы на практике....867 Современные средства позволяют упростить или заменить метаклассы....867 Метаклассы – стабильное языковое средство....868 У класса может быть только один метакласс....868 Метаклассы должны быть деталью реализации....869 Метаклассный трюк с __prepare__....869 Заключение....871 Резюме....872 Дополнительная литература....873 Послесловие....877 Предметный указатель....880

Описание

Ниже — практический обзор по теме «python».

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

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

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

На этом основные моменты по теме закрыты.

python более издание вершинам мастерства локаничное эффективное программирование

Частые вопросы

Можно ли скачать «Python. К вершинам мастерства: Локаничное и эффективное программирование. 2 изд» бесплатно?

Да, «Python. К вершинам мастерства: Локаничное и эффективное программирование. 2 изд» доступна для бесплатного скачивания на нашем сайте в формате PDF. Ссылка на файл находится на этой странице.

В каком формате и какого размера файл?

Книга предоставляется в формате PDF, размер файла 8,2 МБ.

Кто автор и когда вышла книга?

автор — Рамальо Лучано, издательство ДМК Пресс, год выпуска 2022, 898 страниц.

О чём книга «Python. К вершинам мастерства: Локаничное и эффективное программирование. 2 изд»?

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

Похожие материалы