Изучаем Python. Том 2. 5 изд.

Изучаем Python. Том 2. 5 изд.

Изучаем Python. Том 2. 5 изд.
Автор: Лутц Марк
Переводчик: Артеменко Ю.Н.
Дата выхода: 2020
Издательство: Диалектика
Количество страниц: 722
Размер файла: 18.5 MB
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

Содержание....6

Предисловие....18

Часть VI. Классы и объектно-ориентированное программирование....20

ГЛАВА 26. Объектно-ориентированное программирование: общая картина....21

Для чего используются классы?....22

Объектно-ориентированное программирование с высоты птичьего полета....23

Поиск в иерархии наследования....24

Классы и экземпляры....26

Вызовы методов....26

Создание деревьев классов....27

Перегрузка операций....29

Объектно-ориентированное программирование — это многократное использование кода....30

Резюме....33

Проверьте свои знания: контрольные вопросы....33

Проверьте свои знания: ответы....34

ГЛАВА 27. Основы написания классов....35

Классы генерируют множество объектов экземпляров....35

Объекты классов обеспечивают стандартное поведение....36

Объекты экземпляров являются конкретными элементами....36

Первый пример....37

Классы настраиваются через наследование....39

Второй пример....40

Классы являются атрибутами в модулях....42

Классы могут перехватывать операции Python....43

Третий пример....44

Для чего используется перегрузка операций?....46

Простейший в мире класс Python....47

Снова о записях: классы или словари....50

Резюме....52

Проверьте свои знания: контрольные вопросы....52

Проверьте свои знания: ответы....53

ГЛАВА 28. Более реалистичный пример....55

Шаг 1: создание экземпляров....56

Написание кода конструкторов....56

Тестирование в ходе дела....57

Использование кода двумя способами....59

Шаг 2: добавление методов, реализующих поведение....60

Написание кода методов....62

Шаг 3: перегрузка операций....64

Реализация отображения....64

Шаг 4: настройка поведения за счет создания подклассов....66

Написание кода подклассов....67

Расширение методов: плохой способ....67

Расширение методов: хороший способ....68

Полиморфизм в действии....70

Наследование, настройка и расширение....71

Объектно-ориентированное программирование: основная идея....72

Шаг 5: настройка конструкторов....73

Объектно-ориентированное программирование проще, чем может казаться....74

Другие способы комбинирования классов....75

Шаг 6: использование инструментов интроспекции....78

Специальные атрибуты класса....79

Обобщенный инструмент отображения....80

Атрибуты экземпляра или атрибуты класса....82

Размышления относительно имен в классах инструментов....83

Финальная форма классов....84

Шаг 7 (последний): сохранение объектов в базе данных....85

Модули pickle, dbm и shelve....86

Сохранение объектов в базе данных shelve....87

Исследование хранилища shelve в интерактивной подсказке....88

Обновление объектов в хранилище shelve....90

Указания на будущее....92

Резюме....94

Проверьте свои знания: контрольные вопросы....94

Проверьте свои знания: ответы....95

ГЛАВА 29. Детали реализации классов....97

Оператор class....97

Общая форма....98

Пример....98

Методы....100

Пример метода....101

Вызов конструкторов суперклассов....102

Другие возможности вызова методов....102

Наследование....103

Построение дерева атрибутов....103

Специализации унаследованных методов....105

Методики связывания классов....105

Абстрактные суперклассы....107

Пространства имен: заключение....109

Простые имена: глобальные, если не выполнено их присваивание....110

Имена атрибутов: пространства имен объектов....110

“Дзен” пространств имен: присваивания классифицируют имена....111

Вложенные классы: снова о правиле областей видимости LEGB....113

Словари пространств имен: обзор....115

Связи между пространствами имен: инструмент подъема по дереву....118

Снова о строках документации....120

Классы или модули....121

Резюме....122

Проверьте свои знания: контрольные вопросы....122

Проверьте свои знания: ответы....123

ГЛАВА 30. Перегрузка операций....124

Основы....124

Конструкторы и выражения:__in it__и___sub___....125

Распространенные методы перегрузки операций....125

Индексирование и нарезание:__getitem_и_____setitem_....128

Перехват срезов....128

Нарезание и индексирование в Python 2.Х....130

Но метод__index__в Python З.Х не имеет отношения к индексированию!....131

Итерация по индексам:__getitem___....131

Итерируемые объекты:___iter__и___next____....132

Итерируемые объекты, определяемые пользователем....133

Множество итераторов в одном объекте....136

Альтернативная реализация: iter плюс yield....139

Членство: contains , iter и getitem....143

Доступ к атрибутам:_getattr__и___setattr___....146

Ссылка на атрибуты....147

Присваивание и удаление атрибутов....148

Другие инструменты управления атрибутами....149

Эмуляция защиты атрибутов экземпляра: часть 1....150

Строковое представление: г ер г и str....151

Для чего используются два метода отображения?....152

Замечания по использованию отображения....153

Использование с правой стороны и на месте:_г add_и_iadd___....154

Правостороннее сложение....155

Сложение на месте....158

Выражения вызовов:__cal 1__....159

Функциональные интерфейсы и код, основанный на обратных вызовах....161

Сравнения:___It_,___gt__и другие....163

Метод___стр__в Python 2.Х....164

Булевские проверки:_bool___и__1еп____....164

Булевские методы в Python 2.Х....165

Уничтожение объектов:__del___....167

Замечания относительно использования деструкторов....167

Резюме....168

Проверьте свои знания: контрольные вопросы....169

Проверьте свои знания: ответы....169

ГЛАВА 31. Проектирование с использованием классов....170

Python и объектно-ориентированное программирование....170

Полиморфизм означает интерфейсы, а не сигнатуры вызовов....171

Объектно-ориентированное программирование и наследование: отношения “является”....172

Объектно-ориентированное программирование и композиция: отношения “имеет”....174

Снова об обработчиках потоков данных....175

Объектно-ориентированное программирование и делегирование: промежуточные объекты-оболочки....179

Псевдозакрытые атрибуты классов....181

Обзор корректировки имен....181

Для чего используются псевдозакрытые атрибуты?....182

Методы являются объектами: связанные или несвязанные методы....184

Несвязанные методы являются функциями в Python З.Х....186

Связанные методы и другие вызываемые объекты....188

Классы являются объектами: обобщенные фабрики объектов....191

Для чего используются фабрики?....192

Множественное наследование: “подмешиваемые” классы....193

Реализация подмешиваемых классов отображения....194

Другие темы, связанные с проектированием....215

Резюме....215

Проверьте свои знания: контрольные вопросы....216

Проверьте свои знания: ответы....216

ГЛАВА 32. Расширенные возможности классов....217

Расширение встроенных типов....218

Расширение типов путем внедрения....218

Расширение типов путем создания подклассов....219

Модель классов “нового стиля”....221

Что нового в новом стиле?....222

Изменения в классах нового стиля....223

Процедура извлечения атрибутов для встроенных операций пропускает экземпляры....225

Изменения модели типов....230

Все классы являются производными от ob j ect....233

Изменение ромбовидного наследования....235

Дополнительные сведения о MRO: порядок распознавания методов....239

Пример: отображение атрибутов на источники наследования....242

Расширения в классах нового стиля....247

Слоты: объявления атрибутов....248

Свойства: средства доступа к атрибутам....257

Метод__getattribute___и дескрипторы: инструменты для работы с атрибутами....260

Другие изменения и расширения классов....261

Статические методы и методы классов....262

Для чего используются специальные методы?....262

Статические методы в Python 2.Х и З.Х....263

Альтернативы для статических методов....265

Использование статических методов и методов класса....266

Подсчет экземпляров с помощью статических методов....268

Подсчет экземпляров с помощью методов классов....269

Декораторы и метаклассы: часть 1....272

Основы декораторов функций....273

Первый взгляд на декораторы функций, определяемые пользователем....274

Первый взгляд на декораторы классов и метаклассы....276

Дополнительные сведения....278

Встроенная функция super: для лучшего или для худшего?....278

Продолжительные дебаты относительно super....278

Традиционная форма вызова методов суперкласса: переносимая, универсальная....280

Базовое использование встроенной функции super и связанные с ней компромиссы....280

Положительные стороны S 11рв Г: изменения деревьев и координирование 285 Изменения классов во время выполнения и super....287

Кооперативная координация вызовов методов при множественном наследовании....288

Сводка по super....300

Затруднения, связанные с классами....301

Изменение атрибутов классов может иметь побочные эффекты....302

Модификация изменяемых атрибутов классов тоже может иметь побочные эффекты....303

Множественное наследование: порядок имеет значение....304

Области видимости в методах и классах....305

Другие затруднения, связанные с классами....306

Еще раз о KISS: чрезмерно большое количество уровней....307

Резюме....308

Проверьте свои знания: контрольные вопросы....308

Проверьте свои знания: ответы....308

Проверьте свои знания: упражнения для части VI....310

Часть VII. Исключения и инструменты....316

ГЛАВА 33. Основы исключений....317

Для чего используются исключения?....317

Роли, исполняемые исключениями....318

Исключения: краткая история....319

Стандартный обработчик исключений....319

Перехват исключений....321

Генерация исключений....322

Исключения, определяемые пользователем....322

Действия при завершении....323

Резюме....326

Проверьте свои знания: контрольные вопросы....327

Проверьте свои знания: ответы....327

ГЛАВА 34. Детали обработки исключений....328

Оператор try/except/else....328

Как работают операторы try....329

Конструкции оператора try....330

Конструкция else оператора try....333

Пример: стандартное поведение....334

Пример: перехват встроенных исключений....335

Оператор try/finally....336

Пример: написание кода действий при завершении с помощью try/finally....337

Унифицированный оператор try/except/finally....338

Унифицированный синтаксис оператора try....339

Комбинирование finally и except за счет вложения....340

Пример унифицированного оператора try....340

Оператор raise....342

Генерация исключений....343

Области видимости и переменные except в try....344

Распространение исключений с помощью raise....345

Сцепление исключений в Python З.Х: raise from....346

Оператор assert....348

Пример: улавливание нарушений ограничений (но не ошибок!)....349

Диспетчеры контекстов with/as....350

Базовое использование....351

Протокол управления контекстами....352

Множество диспетчеров контекстов в Python 3.1, 2.7 и последующих версиях....354

Резюме....356

Проверьте свои знания: контрольные вопросы....356

Проверьте свои знания: ответы....356

ГЛАВА 35. Объекты исключений....358

Исключения: назад в будущее....359

Строковые исключения канули в лету!....359

Исключения на основе классов....360

Реализация классов исключений....361

Для чего используются иерархии исключений?....363

Встроенные классы исключений....366

Категории встроенных исключений....367

Стандартный вывод и состояние....368

Специальное отображение при выводе....370

Специальные данные и поведение....372

Предоставление деталей исключения....372

Предоставление методов исключений....373

Резюме....374

Проверьте свои знания: контрольные вопросы....374

Проверьте свои знания: ответы....375

ГЛАВА 36. Проектирование с использованием исключений....376

Вложение обработчиков исключений....376

Пример: вложение в потоке управления....378

Пример: синтаксическое вложение....378

Идиомы исключений....380

Прерывание множества вложенных циклов: “безусловный переход”....380

Исключения не всегда являются ошибками....381

Функции могут сигнализировать об условиях с помощью raise....382

Закрытие файлов и серверных подключений....383

Отладка с помощью внешних операторов try....384

Выполнение внутрипроцессных тестов....384

Дополнительные сведения о функции sys . exc inf о....385

Отображение сообщений об ошибках и трассировок....386

Советы по проектированию с использованием исключений и связанные с ними затруднения....387

Что должно быть помещено внутрь операторов try?....387

Перехват слишком многого: избегайте использования пустой конструкции except и конструкции except Exception....388

Перехват чересчур малого: используйте категории на основе классов....390

Сводка по базовому языку....391

Комплект инструментов Python....391

Инструменты для разработки, ориентированные на более крупные проекты....392

Резюме....396

Проверьте свои знания: контрольные вопросы....397

Проверьте свои знания: ответы....397

Проверьте свои знания: упражнения для части VII....397

Часть VIII. Более сложные темы....400

ГЛАВА 37. Unicode и байтовые строки....401

Изменения строк в Python З.Х....402

Основы строк....403

Схемы кодирования символов....403

Хранение строк Python в памяти....406

Типы строк Python....407

Текстовые и двоичные файлы....409

Написание базовых строк....410

Строковые литералы Python З.Х....411

Строковые литералы Python 2.Х....413

Преобразования строковых типов....413

Написание строк Unicode....415

Написание текста ASCII....415

Написание текста, отличающегося от ASCII....416

Кодирование и декодирование текста, отличающегося от ASCII....417

Другие схемы кодирования....418

Байтовые строковые литералы: закодированный текст....419

Преобразования между кодировками....421

Кодирование строк Unicode в Python 2.Х....421

Объявления кодировок в файлах исходного кода....425

Использование объектов bytes в Python З.Х....426

Вызовы методов....426

Операции над последовательностями....427

Другие способы создания объектов bytes....428

Смешивание строковых типов....429

Использование объектов bytearray в Python З.Х/2.6+....429

Объекты bytearray в действии....430

Сводка по строковым типам Python З.Х....432

Использование текстовых и двоичных файлов....432

Основы текстовых файлов....433

Текстовый и двоичный режимы в Python 2.Х и З.Х....434

Несоответствия типов и содержимого в Python З.Х....435

Использование файлов Unicode....436

Чтение и запись данных Unicode в Python З.Х....437

Обработка маркера ВОМ в Python З.Х....438

Файлы Unicode в Python 2.Х....441

Имена файлов и потоки данных Unicode....442

Другие изменения инструментов для обработки строк в Python З.Х....443

Модуль ге для сопоставления с образцом....443

Модуль struct для работы с двоичными данными....445

Модуль pickle для сериализации объектов....447

Инструменты для разбора XML....448

Резюме....452

Проверьте свои знания: контрольные вопросы....453

Проверьте свои знания: ответы....453

ГЛАВА 38. Управляемые атрибуты....456

Для чего используются управляемые атрибуты?....456

Вставка кода для запуска при доступе к атрибутам....457

Свойства....458

Основы....459

Первый пример....459

Вычисляемые атрибуты....460

Реализация свойств с помощью декораторов....461

Дескрипторы....463

Основы....463

Первый пример....466

Вычисляемые атрибуты....468

Использование информации состояния в дескрипторах....469

Связь между свойствами и дескрипторами....472

__getattr__и___getattribute___....474

Основы....475

Первый пример....478

Вычисляемые атрибуты....479

Сравнение___getattr__и____getattribute__....481

Сравнение методик управления....482

Перехват атрибутов для встроенных операций....485

Пример: проверка достоверности атрибутов....492

Использование свойств для проверки достоверности....493

Использование дескрипторов для проверки достоверности....495

Использование___getattr___для проверки достоверности....499

Использование___getattribute__для проверки достоверности....501

Резюме....502

Проверьте свои знания: контрольные вопросы....503

Проверьте свои знания: ответы....503

ГЛАВА 39. Декораторы....505

Что такое декоратор?....505

Управление вызовами и экземплярами....506

Управление функциями и классами....506

Использование и определение декораторов....507

Для чего используются декораторы?....507

Основы....509

Декораторы функций....509

Декораторы классов....513

Вложение декораторов....515

Аргументы декораторов....517

Декораторы одновременно управляют функциями и классами....518

Реализация декораторов функций....519

Отслеживание вызовов....519

Варианты предохранения состояния для декораторов....520

Грубые ошибки, связанные с классами, часть I: декорирование методов....525

Измерение времени вызовов....531

Добавление аргументов к декоратору....534

Реализация декораторов классов....537

Классы-одиночки....537

Отслеживание объектных интерфейсов....539

Грубые ошибки, связанные с классами, часть II: предохранение множества экземпляров....543

Декораторы или управляющие функции....544

Для чего используются декораторы? (Еще раз)....546

Управление функциями и классами напрямую....548

Пример: “закрытые” и “открытые” атрибуты....550

Реализация закрытых атрибутов....550

Детали реализации, часть I....552

Обобщение также для открытых объявлений....554

Детали реализации, часть II....556

Нерешенные проблемы....557

Python не поощряет контроль доступа....565

Пример: проверка допустимости аргументов функций....566

Цель....566

Базовый декоратор проверки вхождения значений в диапазон для позиционных аргументов....567

Обобщение для поддержки также ключевых аргументов и стандартных значений....569

Детали реализации....572

Нерешенные проблемы....575

Аргументы декоратора или аннотации функций....577

Другие приложения: проверка типов (если вы настаиваете!)....579

Резюме....580

Проверьте свои знания: контрольные вопросы....580

Проверьте свои знания: ответы....581

ГЛАВА 40. Метаклассы....591

Нужно ли иметь дело с метаклассами?....592

Повышение уровней “магии”....593

Язык привязок....594

Недостаток “вспомогательных” функций....595

Метаклассы против декораторов классов: раунд 1....597

Модель метаклассов....600

Классы являются экземплярами type....600

Метаклассы являются подклассами type....602

Протокол оператора class....603

Объявление метаклассов....604

Объявление в Python З.Х....604

Объявление в Python 2.Х....605

Координирование метаклассов в Python З.Х и 2.Х....606

Реализация метаклассов....606

Базовый метакласс....607

Настройка создания и инициализации....608

Другие методики реализации метаклассов....609

Наследование и экземпляр....614

Метакласс или суперкласс....616

Наследование: вся история....618

Методы метаклассов....624

Методы метаклассов или методы классов....625

Перегрузка операций в методах метакласса....625

Пример: добавление методов в классы....627

Ручное дополнение....627

Дополнение на основе метаклассов....629

Метаклассы против декораторов классов: раунд 2....630

Пример: применение декораторов к методам....635

Трассировка с помощью декорирования вручную....636

Трассировка с помощью метаклассов и декораторов....637

Применение любого декоратора к методам....638

Метаклассы против декораторов классов: раунд 3 (и последний)....640

Резюме....642

Проверьте свои знания: контрольные вопросы....643

Проверьте свои знания: ответы....643

ГЛАВА 41. Все хорошее когда-нибудь заканчивается....645

Парадокс Python....645

О “необязательных” языковых средствах....646

Против тревожных усовершенствований....647

Сложность или мощь....648

Простота или элитарность....649

Заключительные размышления....649

Куда двигаться дальше?....650

На бис: распечатайте собственный сертификат об окончании!....650

Часть IX. Приложения....654

Приложение А. Установка и конфигурирование....655

Установка интерпретатора Python....655

Присутствует ли Python на компьютере?....655

Где взять интерпретатор Python....656

Шаги установки....657

Конфигурирование интерпретатора Python....659

Переменные среды Python....659

Способы установки конфигурационных параметров....661

Аргументы командной строки интерпретатора Python....664

Командные строки запускающего модуля, появившегося в Python 3.3....667

Дополнительная помощь....668

Приложение Б. Запускающий модуль Windows для Python....669

Наследие Unix....669

Наследие Windows....670

Введение в запускающий модуль Windows....671

Учебное руководство по запускающему модулю Windows....673

Шаг 1: использование директив версий в файлах....673

Шаг 2: использование переключателей версий командной строки....676

Выводы: чистый выигрыш для Windows....677

Приложение В. Изменения в Python и настоящая книга....678

Главные отличия между Python 2.Х и Python З.Х....678

Отличия Python З.Х....679

Расширения, доступные только в Python З.Х....680

Общие замечания: изменения в Python З.Х....681

Изменения в библиотеках и инструментах....682

Переход на Python З.Х....683

Изменения в Python, относящиеся к пятому изданию: Python 2.7, 3.2, 3.3....683

Изменения в Python 2.7....684

Изменения в Python 3.8....684

Изменения в Python 3.7....684

Изменения в Python 3.3....686

Изменения в Python 3.2....687

Изменения в Python, относящиеся к четвертому изданию: Python 2.6, 3.0, 3.1....687

Изменения в Python 3.1....687

Изменения в Python 3.0 и 2.6....688

Удаления в языке Python 3.0....689

Изменения в Python, относящиеся к третьему изданию: Python 2.3, 2.4, 2.5....692

Более ранние и более поздние изменения в Python....692

Приложение Г. Решения упражнений, приводимых в конце частей....693

Часть VI, “Классы и объектно-ориентированное программирование”....693

Часть VII, “Исключения и инструменты”....701

Предметный указатель....710

По причине большого объема книга разделена на два тома. 2-й том обновленного 5-го издания известной книги Марка Лутца поможет вам быстро научиться писать эффективный высококачественный код на Python. Это руководство - идеальный способ начать изучение Python, будь вы новичок в программировании или профессиональный разработчик программного обеспечения на других языках.

Простое и понятное учебное пособие, укомплектованное контрольными вопросами, упражнениями и полезными иллюстрациями, позволит вам освоить основы линеек Python 3.X и 2.X. Вы также ознакомитесь с расширенными возможностями языка, получившими широкое распространение в коде Python.

Хорошая новость в том, что ООП в Python гораздо проще для понимания и использования, чем в других языках, таких как C++ или Java. Будучи динамически типизированным языком написания сценариев, Python устраняет большую часть синтаксического беспорядка и сложности, которые затуманивают ООП в других инструментах.

Благодаря книге вы:

  • Исследуете основные встроенные типы объектов Python, такие как числа, списки и словари
  • Научитесь создавать и обрабатывать объекты с помощью операторов Python и освоите общую синтаксическую модель Python
  • Сможете применять функции для устранения избыточности кода и упаковки кода с целью многократного использования
  • Узнаете, как организовывать операторы, функции и прочие инструменты в более крупные компоненты посредством модулей
  • Погрузитесь глубже в классы — инструмент объектно-ориентированного программирования Python для структурирования кода
  • Научитесь писать крупные программы с применением модели обработки исключений и инструментов разработки Python
  • Освоите более сложные инструменты Python, включая декораторы, дескрипторы, метаклассы и обработку Unicode

Похожее:

Список отзывов:

Нет отзывов к книге.