Python Книга рецептов_новый лого переплет....1
Книга рецептов Python_макет (1).pdf....2
задача....17
решение....17
обсуждение....21
задача-1....21
решение-1....22
обсуждение-1....23
задача-2....24
решение-2....24
обсуждение-2....24
поиск-n-максимальных-и-минимальных-элеме....27
задача-3....27
решение-3....27
обсуждение-3....27
реализация-очереди-с-приоритетом....29
задача-4....28
решение-4....28
обсуждение-4....28
отображение-ключей-на-несколько-значений....33
задача-5....30
решение-5....30
обсуждение-5....30
поддержание-порядка-в-словарях....35
задача-6....31
решение-6....31
обсуждение-6....31
вычисления-на-словарях....36
задача-7....32
решение-7....32
обсуждение-7....32
задача-8....33
решение-8....33
обсуждение-8....34
задача-9....34
решение-9....34
обсуждение-9....35
задача-10....35
решение-10....35
обсуждение-10....38
определение-наиболее-часто-встречающихся....39
проблема....39
решение-11....39
обсуждение-11....39
сортировка-списка-словарей-по-общему-клю....41
задача-11....40
решение-12....40
обсуждение-12....41
сортировка-объектов-не-поддерживающих-ср....44
задача-12....41
решение-13....41
обсуждение-13....42
группирование-записей-на-основе-полей....46
задача-13....42
решение-14....42
обсуждение-14....42
фильтрование-элементов-последовательност....48
задача-14....43
решение-15....43
обсуждение-15....44
задача-15....45
решение-16....45
обсуждение-16....45
задача-16....46
решение-17....46
обсуждение-17....49
одновременное-преобразование-и-сокращени....52
задача-17....50
решение-18....50
обсуждение-18....51
объединение-нескольких-отображений-в-одн....54
задача-18....52
решение-19....52
обсуждение-19....52
строки-и-текст....57
разрезание-строк-разделенных-различными-....58
задача-19....53
решение-20....53
поиск-текста-в-начале-и-в-конце-строки....60
задача-20....55
решение-21....55
обсуждение-20....55
задача-21....56
решение-22....56
обсуждение-21....57
задача-22....57
решение-23....57
обсуждение-22....58
поиск-и-замена-текста....63
задача-23....62
решение-24....62
обсуждение-23....63
поиск-и-замена-текста-без-учета-регистра....65
задача-24....63
решение-25....63
обсуждение-24....64
определение-регулярных-выражений-для-пои....66
задача-25....64
решение-26....64
обсуждение-25....65
написание-регулярного-выражения-для-мног....68
задача-26....65
решение-27....65
обсуждение-26....65
приведение-текста-в-unicode-к-стандартно....70
задача-27....66
решение-28....66
обсуждение-27....67
использование-символов-unicode-в-регуляр....73
задача-28....67
решение-29....68
обсуждение-28....68
задача-29....68
решение-30....68
обсуждение-29....69
решение-31....69
решение-32....69
выравнивание-текстовых-строк....74
задача-30....74
решение-33....74
обсуждение-31....74
объединение-и-конкатенация-строк....76
задача-31....75
решение-34....75
обсуждение-32....76
интерполяция-переменных-в-строках....80
задача-32....77
решение-35....77
обсуждение-33....78
разбивка-текста-на-фиксированное-количес....84
задача-33....79
решение-36....79
обсуждение-34....80
задача-34....80
решение-37....80
обсуждение-35....80
задача-35....81
решение-38....81
обсуждение-36....82
задача-36....83
решение-39....83
обсуждение-37....88
задача-37....91
решение-40....91
обсуждение-38....92
решение-41....98
обсуждение-39....98
выполнение-точных-вычислений-с-десятичны....100
задача-39....99
решение-42....99
обсуждение-40....100
форматирование-чисел-для-вывода....104
задача-40....101
решение-43....101
обсуждение-41....101
работа-с-бинарными-восьмеричными-и-шестн....107
задача-41....102
решение-44....102
обсуждение-42....103
упаковка-и-распаковка-больших-целых-чисе....110
задача-42....104
решение-45....104
обсуждение-43....104
задача-43....105
решение-46....105
обсуждение-44....105
задача-44....106
решение-47....106
обсуждение-45....106
решение-48....107
обсуждение-46....108
задача-46....108
решение-49....108
обсуждение-47....113
вычисления-с-матрицами-и-линейная-алгебр....116
задача-47....113
решение-50....113
обсуждение-48....114
случайный-выбор....118
решение-51....114
обсуждение-49....115
перевод-дней-в-секунды-и-другие-базовые-....121
задача-49....116
решение-52....116
обсуждение-50....117
определение-даты-последней-пятницы....122
задача-50....117
решение-53....117
обсуждение-51....118
задача-51....119
решение-54....119
обсуждение-52....119
задача-52....120
решение-55....120
обсуждение-53....120
задача-53....121
решение-56....121
обсуждение-54....125
итераторы-и-генераторы....128
ручное-прохождение-по-итератору....129
решение-57....126
делегирование-итерации....130
задача-55....127
решение-58....128
обсуждение-56....128
создание-новых-итерационных-паттернов-с-....132
задача-56....128
решение-59....128
обсуждение-57....129
реализация-протокола-итератора....134
задача-57....129
обсуждение-58....130
итерирование-в-обратном-порядке....137
задача-58....131
решение-61....131
обсуждение-59....132
задача-59....132
решение-62....132
обсуждение-60....132
задача-60....133
решение-63....133
обсуждение-61....133
задача-61....134
решение-64....134
обсуждение-62....135
итерирование-по-всем-возможным-комбинаци....139
задача-62....138
обсуждение-63....139
итерирование-по-парам-индекс-значение-по....141
задача-63....140
решение-66....140
обсуждение-64....141
одновременное-итерирование-по-нескольким....145
задача-64....141
решение-67....141
обсуждение-65....142
итерирование-по-элементам-находящимся-в-....147
проблема-1....142
решение-68....143
обсуждение-66....143
создание-каналов-для-обработки-данных....149
задача-65....144
решение-69....144
обсуждение-67....145
задача-66....147
решение-70....147
обсуждение-68....147
задача-67....148
решение-71....148
обсуждение-69....148
решение-72....151
обсуждение-70....151
файлы-и-ввод-вывод....154
чтение-и-запись-текстовых-данных....154
решение-73....152
решение-74....153
обсуждение-71....154
перенаправление-вывода-в-файл....159
задача-69....155
решение-75....155
обсуждение-72....155
вывод-с-другим-разделителем-или-символом....160
задача-70....155
решение-76....155
обсуждение-73....155
чтение-и-запись-бинарных-данных....161
задача-71....156
решение-77....156
обсуждение-74....156
запись-в-файл-которого-ещё-нет....164
задача-72....157
решение-78....157
обсуждение-75....158
задача-73....158
решение-79....158
обсуждение-76....159
задача-74....159
решение-80....159
обсуждение-77....159
задача-75....160
решение-81....160
обсуждение-78....161
задача-76....161
решение-82....161
обсуждение-79....161
отображаемые-в-память-бинарные-файлы....165
задача-77....164
решение-83....164
обсуждение-80....165
манипулирование-путями-к-файлам....169
задача-78....166
решение-84....166
обсуждение-81....167
проверка-существования-файла....171
задача-79....167
решение-85....167
обсуждение-82....167
получение-содержимого-каталога....172
задача-80....168
решение-86....168
обсуждение-83....168
обход-кодировки-имен-файлов....174
задача-81....169
решение-87....169
обсуждение-84....170
задача-82....170
решение-88....170
обсуждение-85....170
задача-83....172
решение-89....172
обсуждение-86....172
задача-84....173
решение-90....173
обсуждение-87....176
оборачивание-существующего-дескриптора-ф....176
задача-85....176
решение-91....176
обсуждение-88....177
создание-временных-файлов-и-каталогов....180
задача-86....178
решение-92....178
обсуждение-89....179
работа-с-последовательными-портами....183
задача-87....179
обсуждение-90....180
сериализация-объектов-python....186
задача-88....180
решение-94....180
задача-89....183
решение-95....183
обсуждение-92....184
чтение-и-запись-в-формате-json....190
задача-90....188
решение-96....188
обсуждение-93....188
парсинг-простых-xml-данных....195
задача-91....191
обсуждение-94....191
задача-92....193
решение-98....193
обсуждение-95....197
преобразование-словарей-в-xml....200
задача-93....198
решение-99....198
обсуждение-96....199
парсинг-изменение-и-перезапись-xml....203
задача-94....200
решение-100....200
обсуждение-97....200
парсинг-xml-документов-с-пространствами-....205
задача-95....201
решение-101....201
обсуждение-98....202
задача-96....203
решение-102....203
обсуждение-99....204
задача-97....205
решение-103....205
обсуждение-100....205
задача-98....206
решение-104....206
обсуждение-101....206
задача-99....206
решение-105....209
обсуждение-102....209
чтение-вложенных-и-различных-по-размеру-....215
задача-100....212
решение-106....212
обсуждение-103....220
суммирование-данных-и-обсчёт-статистики....226
задача-101....222
решение-107....222
обсуждение-104....223
функции....229
определение-функций-принимающих-любое-ко....229
задача-102....223
решение-108....223
обсуждение-105....224
определение-функций-принимающих-только-и....231
задача-103....225
решение-109....225
обсуждение-106....226
задача-104....226
решение-110....226
обсуждение-107....227
задача-105....227
решение-111....227
обсуждение-108....227
задача-106....228
решение-112....228
обсуждение-109....228
определение-анонимных-функций-или-функци....234
задача-107....233
решение-113....233
обсуждение-110....233
захват-переменных-в-анонимных-функциях....236
задача-108....234
решение-114....234
обсуждение-111....234
заставляем-вызывамый-объект-с-n-аргумент....237
задача-109....235
решение-115....235
обсуждение-112....236
замена-классов-с-одним-методом-функциями....242
задача-110....238
решение-116....238
обсуждение-113....238
задача-111....238
решение-117....239
обсуждение-114....240
задача-112....241
решение-118....243
обсуждение-115....244
доступ-к-переменным-определенным-внутри-....248
задача-113....245
решение-119....245
обсуждение-116....245
классы-и-объекты....252
изменение-строкового-представления-экзем....253
задача-114....248
решение-120....248
обсуждение-117....248
настройка-строкового-форматирования....254
задача-115....249
решение-121....249
обсуждение-118....250
задача-116....250
решение-122....250
задача-117....252
решение-123....252
обсуждение-120....253
инкапсуляция-имён-в-классе....255
задача-118....255
решение-124....255
обсуждение-121....256
создание-управляемых-атрибутов....258
задача-119....256
решение-125....256
обсуждение-122....258
вызов-метода-родительского-класса....265
задача-120....259
решение-126....259
обсуждение-123....260
задача-121....263
решение-127....263
обсуждение-124....266
создание-нового-типа-атрибута-класса-или....270
задача-122....268
решение-128....268
обсуждение-125....269
использование-лениво-вычисляемых-свойств....275
решение-129....270
обсуждение-126....271
задача-124....272
решение-130....272
обсуждение-127....273
определение-интерфейса-или-абстрактного-....279
задача-125....278
решение-131....278
обсуждение-128....279
реализации-модели-данных-или-системы-тип....283
решение-132....280
решение-133....281
обсуждение-129....282
задача-126....285
решение-134....285
обсуждение-130....289
делегирование-доступа-к-атрибуту....291
задача-127....290
решение-135....290
обсуждение-131....292
определение-более-одного-конструктора-в-....297
задача-128....294
решение-136....294
обсуждение-132....294
создание-экземпляра-без-вызова-init....300
задача-129....295
решение-137....295
обсуждение-133....295
задача-130....296
решение-138....296
обсуждение-134....297
задача-131....302
решение-139....302
обсуждение-135....303
вызов-метода-объекта-с-передачей-имени-м....311
задача-132....306
решение-140....306
обсуждение-136....306
реализация-шаблона-проектирования-посети....313
задача-133....307
решение-141....307
обсуждение-137....309
реализация-шаблона-посетитель-без-рекурс....315
задача-134....314
обсуждение-138....316
управление-памятью-в-циклических-структу....324
задача-135....319
решение-143....319
обсуждение-139....319
задача-136....321
решение-144....321
обсуждение-140....325
создание-закэшированных-экземпляров....326
обсуждение-141....326
метапрограммирование....332
создание-обёртки-для-функции....333
задача-138....329
решение-146....329
обсуждение-142....329
сохранение-метаданных-функции-при-написа....336
задача-139....330
решение-147....330
обсуждение-143....331
задача-140....332
решение-148....332
обсуждение-144....332
задача-141....333
решение-149....333
обсуждение-145....333
задача-142....334
решение-150....334
обсуждение-146....338
определение-декоратора-принимающего-необ....340
задача-143....339
решение-151....339
обсуждение-147....339
принудительная-проверка-типов-в-функции-....343
задача-144....341
решение-152....341
обсуждение-148....341
задача-145....343
решение-153....343
обсуждение-149....344
задача-146....345
решение-154....345
обсуждение-150....346
применение-декораторов-к-методам-класса-....349
задача-147....349
решение-155....349
обсуждение-151....350
написание-декораторов-которые-добавляют-....353
задача-148....351
решение-156....351
обсуждение-152....351
использование-декораторов-как-патчей-опр....356
задача-149....353
решение-157....353
обсуждение-153....353
использование-метакласса-для-управления-....359
задача-150....354
решение-158....354
обсуждение-154....356
захват-порядка-определения-атрибутов-кла....362
задача-151....356
решение-159....356
обсуждение-155....357
задача-152....359
решение-160....359
обсуждение-156....362
принудительная-установка-аргументной-сиг....364
решение-161....363
обсуждение-157....364
принуждение-к-использованию-соглашений-о....368
решение-162....365
обсуждение-158....367
задача-155....368
решение-163....368
обсуждение-159....369
задача-156....370
решение-164....370
обсуждение-160....373
реализация-множественной-диспетчеризации....375
задача-157....374
решение-165....374
обсуждение-161....376
избежание-повторяющихся-методов-свойств....384
задача-158....378
решение-166....378
обсуждение-162....379
задача-159....379
решение-167....379
обсуждение-163....380
задача-160....380
решение-168....380
обсуждение-164....384
задача-161....386
решение-169....386
обсуждение-165....387
дизассемблирование-байт-кода-python....393
задача-162....389
решение-170....389
обсуждение-166....389
задача-163....391
решение-171....391
обсуждение-167....391
задача-164....392
решение-172....392
обсуждение-168....393
задача-165....393
решение-173....393
обсуждение-169....394
разделение-модуля-на-несколько-файлов....398
задача-166....397
решение-174....398
обсуждение-170....398
заставляем-отдельные-каталоги-с-кодом-им....401
задача-167....400
решение-175....400
обсуждение-171....400
перезагрузка-модулей....406
задача-168....401
решение-176....401
обсуждение-172....401
создание-каталога-или-zip-архива-запуска....407
задача-169....402
решение-177....402
обсуждение-173....403
задача-170....403
решение-178....403
обсуждение-174....404
задача-171....405
решение-179....405
обсуждение-175....405
задача-172....406
решение-180....406
обсуждение-176....406
задача-173....406
решение-181....407
обсуждение-177....414
применение-к-модулям-патчей-во-время-имп....427
задача-174....423
решение-182....423
обсуждение-178....424
задача-175....425
решение-183....426
обсуждение-179....426
задача-176....426
решение-184....426
обсуждение-180....426
задача-177....427
решение-185....427
обсуждение-181....430
модули-и-пакеты....432
сети-и-веб-программирование....432
взаимодействие-с-http-сервисами-в-роли-к....432
задача-178....431
обсуждение-182....433
создание-tcp-сервера....438
задача-179....434
решение-187....434
обсуждение-183....435
задача-180....436
решение-188....436
обсуждение-184....437
задача-181....438
решение-189....438
обсуждение-185....441
создание-простого-rest-интерфейса....442
задача-182....442
решение-190....442
обсуждение-186....443
реализация-простого-удалённого-вызова-пр....450
задача-183....446
решение-191....446
обсуждение-187....446
задача-184....447
решение-192....447
обсуждение-188....448
задача-185....449
решение-193....449
обсуждение-189....452
jsonrpcclient.py....455
простая-аутентификация-клиентов....455
задача-186....454
решение-194....454
обсуждение-190....455
добавление-ssl-в-сетевые-сервисы....459
задача-187....455
решение-195....455
обсуждение-191....458
передача-файловых-дескрипторов-сокетов-м....463
задача-188....462
решение-196....463
обсуждение-192....464
разбираемся-с-вводом-выводом-управляемым....470
задача-189....465
решение-197....466
отсылка-и-получение-больших-массивов....474
задача-190....473
решение-198....473
обсуждение-194....473
конкурентное-программирование....478
запуск-и-остановка-потоков....478
задача-191....475
решение-199....475
обсуждение-195....477
как-узнать-стартовал-ли-поток....484
задача-192....478
решение-200....478
обсуждение-196....479
задача-193....480
решение-201....480
обсуждение-197....485
блокировка-критически-важных-участков....489
задача-194....487
решение-202....487
обсуждение-198....487
задача-195....490
решение-203....490
обсуждение-199....491
задача-196....493
решение-204....493
обсуждение-200....495
создание-пула-потоков....497
задача-197....496
решение-205....496
обсуждение-201....497
простое-параллельное-программирование....502
задача-198....499
решение-206....499
обсуждение-202....499
задача-199....502
решение-207....502
обсуждение-203....505
определение-акторной-задачи....508
задача-200....506
решение-208....506
обсуждение-204....508
реализация-системы-сообщений-опубликоват....513
задача-201....509
решение-209....509
обсуждение-205....510
задача-202....512
решение-210....512
обсуждение-206....518
обсуждение-207....519
опрашивание-многопоточных-очередей....523
задача-203....520
решение-211....520
обсуждение-208....521
задача-204....522
решение-212....522
обсуждение-209....523
полезные-скрипты-и-системное-администрир....529
скрипты-принимающие-ввод-через-перенапра....529
задача-205....528
решение-213....528
обсуждение-210....528
завершение-программы-с-выводом-сообщения....531
решение-214....529
обсуждение-211....529
парсинг-аргументов-командной-строки....532
задача-207....529
решение-215....529
обсуждение-212....530
запрос-пароля-во-время-выполнения....536
задача-208....532
решение-216....532
обсуждение-213....532
задача-209....532
решение-217....532
обсуждение-214....532
задача-210....532
решение-218....532
обсуждение-215....533
задача-211....534
решение-219....534
обсуждение-216....535
создание-и-распаковка-архивов....538
задача-212....538
решение-220....538
обсуждение-217....538
поиск-файлов-по-имени....539
задача-213....538
решение-221....538
обсуждение-218....539
чтение-конфигурационных-файлов....542
задача-214....539
решение-222....539
обсуждение-219....540
добавление-логирования-в-простые-скрипты....546
задача-215....542
решение-223....542
обсуждение-220....543
задача-216....544
решение-224....544
обсуждение-221....544
задача-217....545
решение-225....545
обсуждение-222....546
задача-218....546
решение-226....549
обсуждение-223....550
запуск-браузера....551
задача-219....550
решение-227....550
обсуждение-224....551
тестирование-отдадка-и-исключения....553
тестирование-отправки-вывода-в-stdout....553
задача-220....551
решение-228....552
патчинг-объектов-в-юнит-тестах....557
задача-221....553
решение-229....553
обсуждение-226....553
проверка-вызывающих-исключения-условий-в....561
задача-222....555
решение-230....555
обсуждение-227....556
задача-223....556
решение-231....556
обсуждение-228....557
задача-224....558
решение-232....558
обсуждение-229....558
обработка-множественных-исключений....561
задача-225....561
решение-233....561
обсуждение-230....561
ловим-все-исключения....564
задача-226....562
решение-234....562
обсуждение-231....562
создание-собственных-исключений....565
задача-227....563
решение-235....563
обсуждение-232....564
возбужение-исключения-в-ответ-на-другое-....569
задача-228....565
решение-236....565
обсуждение-233....566
задача-229....567
решение-237....567
обсуждение-234....567
задача-230....567
решение-238....567
обсуждение-235....568
задача-231....569
решение-239....569
обсуждение-236....570
профилирование-и-замеры-времени-выполнен....573
решение-240....573
обсуждение-237....574
заставляем-ваши-программы-выполняться-бы....577
задача-233....575
решение-241....575
обсуждение-238....578
задача-234....580
решение-242....580
обсуждение-239....584
задача-235....588
решение-243....588
обсуждение-240....589
задача-236....591
решение-244....591
обсуждение-241....592
управление-непрозрачными-указателями-в-м....596
задача-237....595
решение-245....595
обсуждение-242....596
определение-и-экспортирование-с-api-из-м....600
задача-238....597
решение-246....597
обсуждение-243....599
задача-239....601
решение-247....601
обсуждение-244....602
освобождение-gil-в-расширениях-на-c....609
задача-240....607
решение-248....607
обсуждение-245....608
смешивание-потоков-из-c-и-python....610
задача-241....608
решение-249....608
обсуждение-246....609
оборачивание-кода-на-c-в-swig....613
задача-242....609
решение-250....609
обсуждение-247....610
задача-243....613
решение-251....613
обсуждение-248....617
использование-cython-для-высокопроизводи....624
задача-244....620
решение-252....620
обсуждение-249....621
задача-245....623
решение-253....624
обсуждение-250....624
передача-null-терминированных-строк-библ....627
задача-246....627
решение-254....627
обсуждение-251....628
передача-строк-unicode-в-библиотеки-на-c....632
задача-247....630
решение-255....630
обсуждение-252....631
задача-248....633
решение-256....633
обсуждение-253....634
задача-249....634
решение-257....634
обсуждение-254....635
передача-имён-файлов-в-расширения-на-с....640
задача-250....639
решение-258....639
обсуждение-255....640
передача-открытых-файлов-в-расширения-на....641
задача-251....640
обсуждение-256....641
чтение-файлоподобных-объектов-из-c....644
задача-252....641
решение-260....641
обсуждение-257....642
задача-253....643
решение-261....643
обсуждение-258....643
задача-254....644
обсуждение-259....644
Предисловие....13
Благодарности....17
Об авторе....18
Колофон....19
Вступительное слово....20
Структуры данных и алгоритмы....21
1.1. Распаковка последовательности в отдельные переменные....21
1.2. Распаковка элементов из последовательностей произвольной длины....23
1.3. Оставляем N последних элементов....25
1.4. Поиск N максимальных и минимальных элементов....27
1.5. Реализация очереди с приоритетом....28
1.6. Отображение ключей на несколько значений в словаре....31
1.7. Поддержание порядка в словарях....32
1.8. Вычисления со словарями....33
1.9. Поиск общих элементов в двух словарях....35
1.10. Удаление дубликатов из последовательности с сохранением порядка элементов....36
1.11. Присваивание имен срезам....37
1.12. Определение наиболее часто встречающихся элементов в последовательности....39
1.13. Сортировка списка словарей по общему ключу....41
1.14. Сортировка объектов, не поддерживающих сравнение....42
1.15. Группирование записей на основе полей....43
1.16. Фильтрование элементов последовательности....45
1.17. Извлечение подмножества из словаря....47
1.18. Отображение имен на последовательность элементов....48
1.19. Одновременное преобразование и сокращение (свертка) данных....51
1.20. Объединение нескольких отображений в одно....52
Строки и текст....55
2.1. Разрезание строк различными разделителями....55
2.2. Поиск текста в начале и в конце строки....56
2.3. Поиск строк с использованием масок оболочки (shell)....58
2.4. Поиск совпадений и поиск текстовых паттернов....59
2.5. Поиск и замена текста....62
2.6. Поиск и замена текста без учета регистра....64
2.7. Определение регулярных выражений для поиска кратчайшего совпадения....65
2.8. Написание регулярного выражения для многострочных шаблонов....66
2.9. Нормализация текста в Unicode к стандартному представлению....67
2.10. Использование символов Unicode в регулярных выражениях....69
2.11. Срезание нежелательных символов из строк....70
2.12. Чистка строк....71
2.13. Выравнивание текстовых строк....74
2.14. Объединение и конкатенация строк....75
2.15. Интерполяция переменных в строках....78
2.16. Разбивка текста на фиксированное количество колонок....80
2.17. Работа с HTML- и XML-сущностями в тексте....81
2.18. Токенизация текста....83
2.19. Написание простого парсера на основе метода рекурсивного спуска....85
2.20. Выполнение текстовых операций над байтовыми строками....94
Числа, даты и время....98
3.1. Округление числовых значений....98
3.2. Выполнение точных вычислений с десятичными дробями....99
3.3. Форматирование чисел для вывода....101
3.4. Работа с бинарными, восьмеричными и шестнадцатеричными целыми числами....103
3.5. Упаковка и распаковка больших целых чисел из байтовых строк....105
3.6. Вычисления с комплексными числами....106
3.7. Работа с бесконечными значениями и NaN....108
3.8. Вычисления с дробями....110
3.9. Вычисления на больших массивах чисел....111
3.10. Вычисления с матрицами и линейная алгебра....114
3.11. Случайный выбор....116
3.12. Перевод дней в секунды и другие базовые методы конвертации времени....118
3.13. Определение даты последней пятницы....120
3.14. Поиск диапазона дат для текущего месяца....121
3.15. Конвертирование строк в даты и время....123
3.16. Манипулирование датами с учетом временных зон....124
Итераторы и генераторы....127
4.1. Ручное прохождение по итератору....127
4.2. Делегирование итерации....128
4.3. Создание новых итерационных паттернов с помощью генераторов....129
4.4. Реализация протокола итератора....131
4.5. Итерирование в обратном порядке....133
4.6. Определение генератора с дополнительным состоянием....134
4.7. Получение среза итератора....135
4.8. Пропуск первой части итерируемого объекта....136
4.9. Итерирование по всем возможным комбинациям и перестановкам....138
4.10. Итерирование по парам «индекс–значение» последовательности....140
4.11. Одновременное итерирование по нескольким последовательностям....142
4.12. Итерирование по элементам, находящимся в отдельных контейнерах....144
4.13. Создание каналов для обработки данных....145
4.14. Превращение вложенной последовательности в плоскую....148
4.15. Последовательное итерирование по слитым отсортированным итерируемым объектам....150
4.16. Замена бесконечных циклов while итератором....151
Файлы и ввод-вывод....153
5.1. Чтение и запись текстовых данных....153
5.2. Перенаправление вывода в файл....155
5.3. Вывод с другим разделителем или символом конца строки....156
5.4. Чтение и запись бинарных данных....157
5.5. Запись в файл, которого еще нет....159
5.6. Выполнение операций ввода-вывода над строками....160
5.7. Чтение и запись сжатых файлов с данными....161
5.8. Итерирование по записям фиксированного размера....162
5.9. Чтение бинарных данных в изменяемый (мутабельный) буфер....163
5.10. Отображаемые в память бинарные файлы....164
5.11. Манипулирование путями к файлам....167
5.12. Проверка существования файла....168
5.13. Получение содержимого каталога....169
5.14. Обход кодировки имен файлов....170
5.15. Вывод «плохих» имен файлов....171
5.16. Добавление или изменение кодировки уже открытого файла....173
5.17. Запись байтов в текстовый файл....175
5.18. Оборачивание существующего дескриптора файла для использования в качестве объекта файла....176
5.19. Создание временных файлов и каталогов....178
5.20. Работа с последовательными портами....180
5.21. Сериализация объектов Python....181
Кодирование и обработка данных....185
6.1. Чтение и запись данных в формате CSV....185
6.2. Чтение и запись в формате JSON....188
6.3. Парсинг простых XML-данных....193
6.4. Пошаговый парсинг очень больших XML-файлов....195
6.5. Преобразование словарей в XML....199
6.6. Парсинг, изменение и перезапись XML....200
6.7. Парсинг XML-документов с пространствами имен....202
6.8. Взаимодействие с реляционной базой данных....204
6.9. Декодирование и кодирование шестнадцатеричных цифр....207
6.10. Кодирование и декодирование в Base64....208
6.11. Чтение и запись бинарных массивов структур....209
6.12. Чтение вложенных и различных по размеру бинарных структур....213
6.13. Суммирование данных и обсчет статистики....223
Функции....226
7.1. Определение функций, принимающих любое количество аргументов....226
7.2. Определение функций, принимающих только именованные аргументы....227
7.3. Прикрепление информационных метаданных к аргументам функций....228
7.4. Возвращение функцией нескольких значений....229
7.5. Определение функций с аргументами по умолчанию....230
7.6. Определение анонимных функций или встроенных функций (inline)....233
7.7. Захват переменных в анонимных функциях....234
7.8. Заставляем вызываемый объект с N аргументами работать так же, как вызываемый объект с меньшим количеством аргументов....235
7.9. Замена классов с одним методом функциями....239
7.10. Передача дополнительного состояния с функциями обратного вызова....240
7.11. Встроенные функции обратного вызова....243
7.12. Доступ к переменным, определенным внутри замыкания....246
Классы и объекты....249
8.1. Изменение строкового представления экземпляров....249
8.2. Настройка строкового форматирования....250
8.3. Создание объектов, поддерживающих протокол менеджера контекста....252
8.4. Экономия памяти при создании большого количества экземпляров....254
8.5. Инкапсуляция имен в классе....255
8.6. Создание управляемых атрибутов....257
8.7. Вызов метода родительского класса....261
8.8. Расширение свойства в подклассе....265
8.9. Создание нового типа атрибута класса или экземпляра....269
8.10. Использование лениво вычисляемых свойств....272
8.11. Упрощение инициализации структур данных....275
8.12. Определение интерфейса или абстрактного базового класса....278
8.13. Реализации модели данных или системы типов....281
8.14. Реализация собственных контейнеров....287
8.15. Делегирование доступа к атрибуту....291
8.16. Определение более одного конструктора в классе....295
8.17. Создание экземпляра без вызова init....296
8.18. Расширение классов с помощью миксин (mixins)....298
8.19. Реализация объектов с состоянием или конечных автоматов....303
8.20. Вызов метода объекта с передачей имени метода в строке....308
8.21. Реализация шаблона проектирования «Посетитель»....310
8.22. Реализация шаблона «Посетитель» без рекурсии....314
8.23. Управление памятью в циклических структурах данных....320
8.24. Заставляем классы поддерживать операции сравнения....324
8.25. Создание закешированных экземпляров....326
Метапрограммирование....330
9.1. Создание обертки для функции....330
9.2. Сохранение метаданных функции при написании декораторов....332
9.3. Снятие («разворачивание») декоратора....333
9.4. Определение декоратора, принимающего аргументы....335
9.5. Определение декоратора с настраиваемыми пользователем атрибутами....336
9.6. Определение декоратора, принимающего необязательный аргумент....339
9.7. Принудительная проверка типов в функции с использованием декоратора....341
9.8. Определение декораторов как части класса....345
9.9. Определение декораторов как классов....347
9.10. Применение декораторов к методам класса и статическим методам....349
9.11. Написание декораторов, которые добавляют аргументы обернутым функциям....351
9.12. Использование декораторов для исправления определений классов....354
9.13. Использование метакласса для управления созданием экземпляров....356
9.14. Захват порядка определения атрибутов класса....358
9.15. Определение метакласса, принимающего необязательные аргументы....361
9.16. Принудительная установка аргументной сигнатуры при использовании *args и **kwargs....363
9.17. Принуждение к использованию соглашений о кодировании в классах....366
9.18. Программное определение классов....369
9.19. Инициализация членов класса во время определения....372
9.20. Реализация множественной диспетчеризации с помощью аннотаций функций....374
9.21. Избежание повторяющихся методов свойств....380
9.22. Легкий способ определения менеджеров контекста....382
9.23. Выполнение кода с локальными побочными эффектами....384
9.24. Парсинг и анализ исходного кода Python....386
9.25. Дизассемблирование байт-кода Python....390
Модули и пакеты....394
10.1. Создание иерархического пакета модулей....394
10.2. Контроль импортирования....395
10.3. Импортирование подмодулей пакета с использованием относительных имен....396
10.4. Разделение модуля на несколько файлов....398
10.5. Создание отдельных каталогов с кодом для импорта под общим пространством имен....400
10.6. Перезагрузка модулей....402
10.7. Создание каталога или zip-архива, запускаемых как основной скрипт....403
10.8. Чтение файлов с данными внутри пакета....404
10.9. Добавление каталогов в sys.path....405
10.10. Импортирование модулей с использованием имени, передаваемого в форме строки ....407
10.11. Загрузка модулей с удаленного компьютера с использованием хуков импортирования....408
10.12. Применение к модулям изменений при импорте....424
10.13. Установка пакетов «только для себя»....427
10.14. Создание нового окружения Python....427
10.15. Распространение пакетов....429
Сети и веб-программирование....431
11.1. Взаимодействие с HTTP-сервисами в роли клиента....431
11.2. Создание TCP-сервера....435
11.3. Создание UDP-сервера....438
11.4. Генерация диапазона IP-адресов из CIDR-адреса....440
11.5. Создание простого REST-интерфейса....442
11.6. Реализация простого удаленного вызова процедуры через XML-RPC....447
11.7. Простое взаимодействие между интерпретаторами....449
11.8. Реализация удаленного вызова процедур....451
11.9. Простая аутентификация клиентов....454
11.10. Добавление SSL в сетевые сервисы....456
11.11. Передача файловых дескрипторов сокетов между процессами....462
11.12. Разбираемся с вводом-выводом, управляемым событиями (event-driven I/0)....467
11.13. Отсылка и получение больших массивов....473
Конкурентность....476
12.1. Запуск и остановка потоков....476
12.2. Как узнать, стартовал ли поток....479
12.3. Коммуникация между потоками....482
12.4. Блокировка критически важных участков....487
12.5. Блокировка с избежанием дедлока....490
12.6. Хранение специфичного состояния потока....494
12.7. Создание пула потоков....496
12.8. Простое параллельное программирование....499
12.9. Разбираемся с GIL (и перестаем волноваться по этому поводу)....503
12.10. Определение акторной задачи....506
12.11. Реализация системы сообщений «опубликовать/подписаться» (pub/sub)....510
12.12. Использование генераторов в качестве альтернативы потокам....513
12.13. Опрашивание многопоточных очередей....521
12.14. Запуск процесса-демона на Unix....524
Полезные скрипты и системное администрирование....528
13.1. Скрипты, принимающие ввод через перенаправление, каналы или файлы....528
13.2. Завершение программы с выводом сообщения об ошибке....529
13.3. Парсинг аргументов командной строки....530
13.4. Запрос пароля во время выполнения....533
13.5. Получение размера окна терминала....533
13.6. Выполнение внешней команды и получение ее вывода....534
13.7. Копирование или перемещение файлов и каталогов....536
13.8. Создание и распаковка архивов....538
13.9. Поиск файлов по имени....538
13.10. Чтение конфигурационных файлов....540
13.11. Добавление логирования в простые скрипты....543
13.12. Добавление логирования в библиотеки....546
13.13. Создание таймера-секундомера....547
13.14. Установка лимитов на использование памяти и CPU....549
13.15. Запуск браузера....550
Тестирование, отладка и исключения....552
14.1. Тестирование отправки вывода в stdout....552
14.2. Изменение объектов в юнит-тестах....553
14.3. Проверка вызывающих исключения условий в рамках юнит-тестов....557
14.4. Логирование вывода теста в файл....558
14.5. Пропуск или ожидание провалов тестов....560
14.6. Обработка множественных исключений....561
14.7. Ловим все исключения....563
14.8. Создание собственных исключений....564
14.9. Возбужение исключения в ответ на другое исключение....566
14.10. Повторное возбуждение последнего исключения....568
14.11. Вывод предупреждающих сообщений....569
14.12. Отладка основных сбоев программы....570
14.13. Профилирование и замеры времени выполнения вашей программы....573
14.14. Заставляем ваши программы выполняться быстрее....575
Расширения на языке C....581
15.1. Доступ к коду на C с использованием ctypes....582
15.2. Написание простого модуля расширения на C....589
15.3. Написание функции расширения для работы с массивами....593
15.4. Управление непрозрачными указателями в модулях расширения на C....595
15.5. Определение и экспортирование С API из модулей расширения....598
15.6. Вызываем Python из С....602
15.7. Освобождение GIL в расширениях на C....608
15.8. Объединение потоков из C и Python....608
15.9. Оборачивание кода на C в Swig....609
15.10. Оборачивание существующего кода на C в Cython....614
15.11. Использование Cython для высокопроизводительных операций над массивами....621
15.12. Превращение указателя на функцию в вызываемый объект....625
15.13. Передача строк с нулевым символом библиотекам на C....627
15.14. Передача строк Unicode в библиотеки на C....631
15.15. Преобразование строк C в Python....635
15.16. Работа со строками C в сомнительной кодировке....636
15.17. Передача имен файлов в расширения на С....639
15.18. Передача открытых файлов в расширения на С....640
15.19. Чтение файлоподобных объектов из C....642
15.20. Потребление итерируемого объекта из С....644
15.21. Диагностика ошибок сегментации....645
Для дальнейшего изучения....647
Веб-сайты....647
Книги, посвященные языку Python....648
Книги для углубленного изучения Python....648
Если вам нужна помощь в разработке программ на языке Python 3 или вы планируете заняться обновлением старого кода на языке Python 2, эта книга - ваш счастливый билет. Она наполнена практическими примерами, разработанными и протестированными в среде Python 3.3, поэтому станет уникальным подспорьем для опытных программистов, желающих сконцентрироваться на современных инструментах и идиомах. .В книге приведены полноценные рецепты, охватывающие свыше 10 основных тем Python, а также задачи, имеющие широкий спектр областей применения. Каждый рецепт содержит примеры кода, которые вы можете использовать в своих проектах, а также включает обсуждение принципов работы данного решения.