Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 638984)
Контекстум
Электро-2024

Python. Книга рецептов (5000,00 руб.)

0   0
Первый авторБизли
АвторыДжонс Б.К.
ИздательствоМ.: ДМК Пресс
Страниц649
ID794604
АннотацияКнига, которую вы держите в руках, даст четкое понимание, как именно стоит писать приложения на Python, чтобы не пришлось раз за разом их переделывать и они были удобны для работы. Это наиболее полное и систематичное руководство по Python, в нем разобраны самые популярные подходы для создания легкочитаемого, оптимизированного и поддерживаемого кода. Также приведены примеры применения полученных знаний в прикладных областях, все главы сопровождаются конкретными заданиями. Издание будет полезно как начинающим разработчикам, так и опытным специалистам.
ISBN978-5-97060-751-0
УДК004.438Python
ББК32.973.22
Бизли, Д. Python. Книга рецептов / Б.К. Джонс; Д. Бизли .— Москва : ДМК Пресс, 2019 .— 649 с. — ISBN 978-5-97060-751-0 .— URL: https://rucont.ru/efd/794604 (дата обращения: 15.06.2024)

Предпросмотр (выдержки из произведения)

Python._Книга_рецептов.pdf
Стр.5
Стр.6
Стр.7
Стр.8
Стр.9
Стр.10
Стр.11
Стр.12
Python._Книга_рецептов.pdf
УДК 004.438Python ББК 32.973.22 Б59 Б59 Python. Книга рецептов / пер. с анг. Б. В. Уварова. – М.: ДМК Пресс, 2019. – 648 с.: ил. Бизли Д., Джонс Б. К. ISBN 978-5-97060-751-0 Книга, которую вы держите в руках, даст четкое понимание, как именно стоит писать приложения на Python, чтобы не пришлось раз за разом их переделывать и они были удобны для работы. Это наиболее полное и систематичное руководство по Python, в нем разобраны самые популярные подходы для создания легкочитаемого, оптимизированного и поддерживаемого кода. Также приведены примеры применения полученных знаний в прикладных областях, все главы сопровождаются конкретными заданиями. Издание будет полезно как начинающим разработчикам, так и опытным специалистам. УДК 004.438Python ББК 32.973.22 Original English language edition published by O’Reilly Media, Inc., 1005 Gravenstein Highway Все права защищены. Любая часть этой книги не может быть воспроизведена в какой North, Sebastopol, CA 95472. Copyright © 2013 David Beazley and Brian Jones. Russian­language edition copyright © 2019 by DMK Press. All rights reserved. бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978­1­449­34037­7 (анг.) ISBN 978­5­97060­751­0 (рус.) Copyright © 2013 David Beazley and Brian Jones © Оформление, издание, перевод, ДМК Пресс, 2019
Стр.5
Содержание Предисловие ................................................................................................................. 12 Благодарности .............................................................................................................. 16 Об авторе ....................................................................................................................... 17 Колофон .......................................................................................................................... 18 Вступительное слово .................................................................................................. 19 Глава 1. Структуры данных и алгоритмы ............................................................ 20 1.1. Распаковка последовательности в отдельные переменные ................................... 20 1.2. Распаковка элементов из последовательностей произвольной длины ................. 22 1.3. Оставляем N последних элементов .......................................................................... 24 1.4. Поиск N максимальных и минимальных элементов .............................................. 26 1.5. Реализация очереди с приоритетом ......................................................................... 27 1.6. Отображение ключей на несколько значений в словаре ........................................ 30 1.7. Поддержание порядка в словарях ............................................................................. 31 1.8. Вычисления со словарями ......................................................................................... 32 1.9. Поиск общих элементов в двух словарях ................................................................. 34 1.10. Удаление дубликатов из последовательности с сохранением порядка элементов .......................................................................................................................... 35 1.11. Присваивание имен срезам .................................................................................... 36 1.12. Определение наиболее часто встречающихся элементов в последовательности ....................................................................................................... 38 1.13. Сортировка списка словарей по общему ключу .................................................... 40 1.14. Сортировка объектов, не поддерживающих сравнение ....................................... 41 1.15. Группирование записей на основе полей .............................................................. 42 1.16. Фильтрование элементов последовательности ..................................................... 44 1.17. Извлечение подмножества из словаря ................................................................... 46 1.18. Отображение имен на последовательность элементов ........................................ 47 1.19. Одновременное преобразование и сокращение (свертка) данных ..................... 50 1.20. Объединение нескольких отображений в одно ..................................................... 51 Глава 2. Строки и текст ............................................................................................... 54 2.1. Разрезание строк различными разделителями ....................................................... 54 2.2. Поиск текста в начале и в конце строки ................................................................... 55 2.3. Поиск строк с использованием масок оболочки (shell) ........................................... 57 2.4. Поиск совпадений и поиск текстовых паттернов .................................................... 58 2.5. Поиск и замена текста ............................................................................................... 61 2.6. Поиск и замена текста без учета регистра ............................................................... 63 2.7. Определение регулярных выражений для поиска кратчайшего совпадения ........ 64 2.8. Написание регулярного выражения для многострочных шаблонов ...................... 65 2.9. Нормализация текста в Unicode к стандартному представлению .......................... 66 2.10. Использование символов Unicode в регулярных выражениях ............................. 68
Стр.6
6  Содержание 2.11. Срезание нежелательных символов из строк ........................................................ 69 2.12. Чистка строк ............................................................................................................. 70 2.13. Выравнивание текстовых строк .............................................................................. 73 2.14. Объединение и конкатенация строк....................................................................... 74 2.15. Интерполяция переменных в строках .................................................................... 77 2.16. Разбивка текста на фиксированное количество колонок ..................................... 79 2.17. Работа с HTML­ и XML­сущностями в тексте .......................................................... 80 2.18. Токенизация текста .................................................................................................. 82 2.19. Написание простого парсера на основе метода рекурсивного спуска................. 84 2.20. Выполнение текстовых операций над байтовыми строками ............................... 93 Глава 3. Числа, даты и время .................................................................................. 97 3.1. Округление числовых значений ............................................................................... 97 3.2. Выполнение точных вычислений с десятичными дробями ................................... 98 3.3. Форматирование чисел для вывода ........................................................................ 100 3.4. Работа с бинарными, восьмеричными и шестнадцатеричными целыми числами ........................................................................................................................... 102 3.5. Упаковка и распаковка больших целых чисел из байтовых строк ....................... 104 3.6. Вычисления с комплексными числами .................................................................. 105 3.7. Работа с бесконечными значениями и NaN ........................................................... 107 3.8. Вычисления с дробями ............................................................................................ 109 3.9. Вычисления на больших массивах чисел ............................................................... 110 3.10. Вычисления с матрицами и линейная алгебра .................................................... 113 3.11. Случайный выбор ................................................................................................... 115 3.12. Перевод дней в секунды и другие базовые методы конвертации времени ...... 117 3.13. Определение даты последней пятницы ............................................................... 119 3.14. Поиск диапазона дат для текущего месяца .......................................................... 120 3.15. Конвертирование строк в даты и время ............................................................... 122 3.16. Манипулирование датами с учетом временных зон ........................................... 123 Глава 4. Итераторы и генераторы ....................................................................... 126 4.1. Ручное прохождение по итератору ......................................................................... 126 4.2. Делегирование итерации ........................................................................................ 127 4.3. Создание новых итерационных паттернов с помощью генераторов .................. 128 4.4. Реализация протокола итератора ........................................................................... 130 4.5. Итерирование в обратном порядке ........................................................................ 132 4.6. Определение генератора с дополнительным состоянием .................................... 133 4.7. Получение среза итератора ..................................................................................... 134 4.8. Пропуск первой части итерируемого объекта ....................................................... 135 4.9. Итерирование по всем возможным комбинациям и перестановкам .................. 137 4.10. Итерирование по парам «индекс–значение» последовательности ................... 139 4.11. Одновременное итерирование по нескольким последовательностям .............. 141 4.12. Итерирование по элементам, находящимся в отдельных контейнерах ............ 143 4.13. Создание каналов для обработки данных ............................................................ 144 4.14. Превращение вложенной последовательности в плоскую ................................. 147 4.15. Последовательное итерирование по слитым отсортированным итерируемым объектам ................................................................................................. 149 4.16. Замена бесконечных циклов while итератором ................................................... 150
Стр.7
Содержание  7 Глава 5. Файлы и ввод-вывод ............................................................................... 152 5.1. Чтение и запись текстовых данных ........................................................................ 152 5.2. Перенаправление вывода в файл ............................................................................ 154 5.3. Вывод с другим разделителем или символом конца строки ................................ 155 5.4. Чтение и запись бинарных данных ........................................................................ 156 5.5. Запись в файл, которого еще нет ............................................................................ 158 5.6. Выполнение операций ввода­вывода над строками ............................................. 159 5.7. Чтение и запись сжатых файлов с данными .......................................................... 160 5.8. Итерирование по записям фиксированного размера ........................................... 161 5.9. Чтение бинарных данных в изменяемый (мутабельный) буфер ......................... 162 5.10. Отображаемые в память бинарные файлы .......................................................... 163 5.11. Манипулирование путями к файлам .................................................................... 166 5.12. Проверка существования файла ........................................................................... 167 5.13. Получение содержимого каталога ........................................................................ 168 5.14. Обход кодировки имен файлов ............................................................................. 169 5.15. Вывод «плохих» имен файлов ............................................................................... 170 5.16. Добавление или изменение кодировки уже открытого файла ........................... 172 5.17. Запись байтов в текстовый файл ........................................................................... 174 5.18. Оборачивание существующего дескриптора файла для использования в качестве объекта файла ............................................................................................... 175 5.19. Создание временных файлов и каталогов ........................................................... 177 5.20. Работа с последовательными портами ................................................................. 179 5.21. Сериализация объектов Python ............................................................................. 180 Глава 6. Кодирование и обработка данных ..................................................... 184 6.1. Чтение и запись данных в формате CSV ................................................................ 184 6.2. Чтение и запись в формате JSON ............................................................................ 187 6.3. Парсинг простых XML­данных ................................................................................ 192 6.4. Пошаговый парсинг очень больших XML­файлов ................................................. 194 6.5. Преобразование словарей в XML ............................................................................ 198 6.6. Парсинг, изменение и перезапись XML ................................................................. 199 6.7. Парсинг XML­документов с пространствами имен ............................................... 201 6.8. Взаимодействие с реляционной базой данных ..................................................... 203 6.9. Декодирование и кодирование шестнадцатеричных цифр ................................. 206 6.10. Кодирование и декодирование в Base64 .............................................................. 207 6.11. Чтение и запись бинарных массивов структур .................................................... 208 6.12. Чтение вложенных и различных по размеру бинарных структур ...................... 212 6.13. Суммирование данных и обсчет статистики ....................................................... 222 Глава 7. Функции ........................................................................................................ 225 7.1. Определение функций, принимающих любое количество аргументов ............... 225 7.2. Определение функций, принимающих только именованные аргументы ........... 226 7.3. Прикрепление информационных метаданных к аргументам функций .............. 227 7.4. Возвращение функцией нескольких значений ...................................................... 228 7.5. Определение функций с аргументами по умолчанию .......................................... 229 7.6. Определение анонимных функций или встроенных функций (inline) ................ 232 7.7. Захват переменных в анонимных функциях .......................................................... 233 7.8. Заставляем вызываемый объект с N аргументами работать так же, как вызываемый объект с меньшим количеством аргументов .................................. 234
Стр.8
8  Содержание 7.9. Замена классов с одним методом функциями ....................................................... 238 7.10. Передача дополнительного состояния с функциями обратного вызова ........... 239 7.11. Встроенные функции обратного вызова .............................................................. 242 7.12. Доступ к переменным, определенным внутри замыкания ................................. 245 Глава 8. Классы и объекты ..................................................................................... 248 8.1. Изменение строкового представления экземпляров ............................................ 248 8.2. Настройка строкового форматирования ................................................................ 249 8.3. Создание объектов, поддерживающих протокол менеджера контекста ............. 251 8.4. Экономия памяти при создании большого количества экземпляров ................. 253 8.5. Инкапсуляция имен в классе ................................................................................... 254 8.6. Создание управляемых атрибутов .......................................................................... 256 8.7. Вызов метода родительского класса ....................................................................... 260 8.8. Расширение свойства в подклассе .......................................................................... 264 8.9. Создание нового типа атрибута класса или экземпляра ...................................... 268 8.10. Использование лениво вычисляемых свойств ..................................................... 271 8.11. Упрощение инициализации структур данных ..................................................... 274 8.12. Определение интерфейса или абстрактного базового класса ............................ 277 8.13. Реализации модели данных или системы типов ................................................. 280 8.14. Реализация собственных контейнеров ................................................................ 286 8.15. Делегирование доступа к атрибуту ....................................................................... 290 8.16. Определение более одного конструктора в классе .............................................. 294 8.17. Создание экземпляра без вызова init ................................................................... 295 8.18. Расширение классов с помощью миксин (mixins) ............................................... 297 8.19. Реализация объектов с состоянием или конечных автоматов ........................... 302 8.20. Вызов метода объекта с передачей имени метода в строке ............................... 307 8.21. Реализация шаблона проектирования «Посетитель» .......................................... 309 8.22. Реализация шаблона «Посетитель» без рекурсии ................................................ 313 8.23. Управление памятью в циклических структурах данных ................................... 319 8.24. Заставляем классы поддерживать операции сравнения ..................................... 323 8.25. Создание закешированных экземпляров ............................................................. 325 Глава 9. Метапрограммирование ........................................................................ 329 9.1. Создание обертки для функции .............................................................................. 329 9.2. Сохранение метаданных функции при написании декораторов ......................... 331 9.3. Снятие («разворачивание») декоратора ................................................................. 332 9.4. Определение декоратора, принимающего аргументы ......................................... 334 9.5. Определение декоратора с настраиваемыми пользователем атрибутами ......... 335 9.6. Определение декоратора, принимающего необязательный аргумент ................ 338 9.7. Принудительная проверка типов в функции с использованием декоратора ...... 340 9.8. Определение декораторов как части класса .......................................................... 344 9.9. Определение декораторов как классов .................................................................. 346 9.10. Применение декораторов к методам класса и статическим методам ............... 348 9.11. Написание декораторов, которые добавляют аргументы обернутым функциям ........................................................................................................................ 350 9.12. Использование декораторов для исправления определений классов ............... 353 9.13. Использование метакласса для управления созданием экземпляров ............... 355 9.14. Захват порядка определения атрибутов класса ................................................... 357 9.15. Определение метакласса, принимающего необязательные аргументы ............ 360
Стр.9
Содержание  9 9.16. Принудительная установка аргументной сигнатуры при использовании *args и **kwargs ............................................................................................................... 362 9.17. Принуждение к использованию соглашений о кодировании в классах ............. 365 9.18. Программное определение классов ...................................................................... 368 9.19. Инициализация членов класса во время определения ....................................... 371 9.20. Реализация множественной диспетчеризации с помощью аннотаций функций .......................................................................................................................... 373 9.21. Избежание повторяющихся методов свойств ...................................................... 379 9.22. Легкий способ определения менеджеров контекста ........................................... 381 9.23. Выполнение кода с локальными побочными эффектами .................................. 383 9.24. Парсинг и анализ исходного кода Python............................................................. 385 9.25. Дизассемблирование байт­кода Python ............................................................... 389 Глава 10. Модули и пакеты .................................................................................... 393 10.1. Создание иерархического пакета модулей .......................................................... 393 10.2. Контроль импортирования.................................................................................... 394 10.3. Импортирование подмодулей пакета с использованием относительных имен ................................................................................................................................. 395 10.4. Разделение модуля на несколько файлов ............................................................. 397 10.5. Создание отдельных каталогов с кодом для импорта под общим пространством имен ...................................................................................................... 399 10.6. Перезагрузка модулей ........................................................................................... 401 10.7. Создание каталога или zip­архива, запускаемых как основной скрипт ............ 402 10.8. Чтение файлов с данными внутри пакета ............................................................ 403 10.9. Добавление каталогов в sys.path ........................................................................... 404 10.10. Импортирование модулей с использованием имени, передаваемого в форме строки .............................................................................................................. 406 10.11. Загрузка модулей с удаленного компьютера с использованием хуков импортирования ............................................................................................................. 407 10.12. Применение к модулям изменений при импорте ............................................. 423 10.13. Установка пакетов «только для себя» .................................................................. 426 10.14. Создание нового окружения Python ................................................................... 426 10.15. Распространение пакетов .................................................................................... 428 Глава 11. Сети и веб-программирование ......................................................... 430 11.1. Взаимодействие с HTTP­сервисами в роли клиента ........................................... 430 11.2. Создание TCP­сервера ........................................................................................... 434 11.3. Создание UDP­сервера ........................................................................................... 437 11.4. Генерация диапазона IP­адресов из CIDR­адреса ............................................... 439 11.5. Создание простого REST­интерфейса .................................................................. 441 11.6. Реализация простого удаленного вызова процедуры через XML­RPC .............. 446 11.7. Простое взаимодействие между интерпретаторами ........................................... 448 11.8. Реализация удаленного вызова процедур ............................................................ 450 11.9. Простая аутентификация клиентов ...................................................................... 453 11.10. Добавление SSL в сетевые сервисы ..................................................................... 455 11.11. Передача файловых дескрипторов сокетов между процессами ....................... 461 11.12. Разбираемся с вводом­выводом, управляемым событиями (event­driven I/0) ..... 466 11.13. Отсылка и получение больших массивов ........................................................... 472
Стр.10
10  Содержание Глава 12. Конкурентность ....................................................................................... 475 12.1. Запуск и остановка потоков .................................................................................. 475 12.2. Как узнать, стартовал ли поток ............................................................................. 478 12.3. Коммуникация между потоками .......................................................................... 481 12.4. Блокировка критически важных участков ........................................................... 486 12.5. Блокировка с избежанием дедлока ....................................................................... 489 12.6. Хранение специфичного состояния потока ......................................................... 493 12.7. Создание пула потоков .......................................................................................... 495 12.8. Простое параллельное программирование ......................................................... 498 12.9. Разбираемся с GIL (и перестаем волноваться по этому поводу) ........................ 502 12.10. Определение акторной задачи ............................................................................ 505 12.11. Реализация системы сообщений «опубликовать/подписаться» (pub/sub) ....... 509 12.12. Использование генераторов в качестве альтернативы потокам ...................... 512 12.13. Опрашивание многопоточных очередей ........................................................... 520 12.14. Запуск процесса­демона на Unix......................................................................... 523 Глава 13. Полезные скрипты и системное администрирование .............. 527 13.1. Скрипты, принимающие ввод через перенаправление, каналы или файлы .... 527 13.2. Завершение программы с выводом сообщения об ошибке ................................ 528 13.3. Парсинг аргументов командной строки ............................................................... 529 13.4. Запрос пароля во время выполнения ................................................................... 532 13.5. Получение размера окна терминала .................................................................... 532 13.6. Выполнение внешней команды и получение ее вывода ..................................... 533 13.7. Копирование или перемещение файлов и каталогов .......................................... 535 13.8. Создание и распаковка архивов ............................................................................ 537 13.9. Поиск файлов по имени......................................................................................... 537 13.10. Чтение конфигурационных файлов .................................................................... 539 13.11. Добавление логирования в простые скрипты .................................................... 542 13.12. Добавление логирования в библиотеки ............................................................. 545 13.13. Создание таймера­секундомера ......................................................................... 546 13.14. Установка лимитов на использование памяти и CPU ........................................ 548 13.15. Запуск браузера .................................................................................................... 549 Глава 14. Тестирование, отладка и исключения ............................................. 551 14.1. Тестирование отправки вывода в stdout .............................................................. 551 14.2. Изменение объектов в юнит­тестах ..................................................................... 552 14.3. Проверка вызывающих исключения условий в рамках юнит­тестов ................ 556 14.4. Логирование вывода теста в файл ........................................................................ 557 14.5. Пропуск или ожидание провалов тестов .............................................................. 559 14.6. Обработка множественных исключений.............................................................. 560 14.7. Ловим все исключения ........................................................................................... 562 14.8. Создание собственных исключений ..................................................................... 563 14.9. Возбужение исключения в ответ на другое исключение..................................... 565 14.10. Повторное возбуждение последнего исключения ............................................. 567 14.11. Вывод предупреждающих сообщений ................................................................ 568 14.12. Отладка основных сбоев программы ................................................................. 569 14.13. Профилирование и замеры времени выполнения вашей программы ............ 572 14.14. Заставляем ваши программы выполняться быстрее ......................................... 574
Стр.11
Содержание  11 Глава 15. Расширения на языке C ........................................................................ 580 15.1. Доступ к коду на C с использованием ctypes........................................................ 581 15.2. Написание простого модуля расширения на C .................................................... 588 15.3. Написание функции расширения для работы с массивами ............................... 592 15.4. Управление непрозрачными указателями в модулях расширения на C ........... 594 15.5. Определение и экспортирование С API из модулей расширения ...................... 597 15.6. Вызываем Python из С ........................................................................................... 601 15.7. Освобождение GIL в расширениях на C ................................................................ 607 15.8. Объединение потоков из C и Python .................................................................... 607 15.9. Оборачивание кода на C в Swig ............................................................................. 608 15.10. Оборачивание существующего кода на C в Cython ........................................... 613 15.11. Использование Cython для высокопроизводительных операций над массивами ................................................................................................................ 620 15.12. Превращение указателя на функцию в вызываемый объект............................ 624 15.13. Передача строк с нулевым символом библиотекам на C .................................. 626 15.14. Передача строк Unicode в библиотеки на C ........................................................ 630 15.15. Преобразование строк C в Python ....................................................................... 634 15.16. Работа со строками C в сомнительной кодировке ............................................. 635 15.17. Передача имен файлов в расширения на С ........................................................ 638 15.18. Передача открытых файлов в расширения на С ................................................ 639 15.19. Чтение файлоподобных объектов из C ............................................................... 641 15.20. Потребление итерируемого объекта из С ........................................................... 643 15.21. Диагностика ошибок сегментации ..................................................................... 644 Приложение А. Для дальнейшего изучения .................................................... 646 Веб­сайты ........................................................................................................................ 646 Книги, посвященные языку Python ............................................................................... 647 Книги для углубленного изучения Python .................................................................... 647
Стр.12

Облако ключевых слов *


* - вычисляется автоматически
Периодика по подписке
Антиплагиат система Руконтекст