Об авторе
Предисловие
Часть I. Введение
Глава 1. Python в вопросах и ответах
Почему программисты используют Python?
Является ли Python "языком сценариев"?
Все хорошо, но есть ли у него недостатки?
Кто в наше время использует Python?
Что можно делать с помощью Python?
Как осуществляется поддержка Python?
В чем сильные стороны Python?
Какими преимуществами обладает Python перед языком X?
В заключение
Закрепление пройденного
Глава 2. Как Python запускает программы
Введение в интерпретатор Python
Выполнение программы
Разновидности модели выполнения
В заключение
Закрепление пройденного
Глава 3. Как пользователь запускает программы
Интерактивный режим
Системная командная строка и файлы
Щелчок на ярлыке файла
Импортирование и перезагрузка модулей
Запуск модулей с помощью функции exec
Пользовательский интерфейс IDLE
Другие интегрированные среды разработки
Другие способы запуска
Какие способы следует использовать?
В заключение
Закрепление пройденного
Часть II. Типы и операции
Глава 4. Введение в типы объектов языка Python
Зачем нужны встроенные типы?
Числа
Строки
Списки
Словари
Кортежи
Файлы
Другие базовые типы
В заключение
Закрепление пройденного
Глава 5. Числа
Базовые числовые типы
Числа в действии
Другие числовые типы
Числовые расширения
В заключение
Закрепление пройденного
Глава 6. Интерлюдия о динамической типизации
Отсутствие инструкций объявления
Разделяемые ссылки
Динамическая типизация повсюду
В заключение
Закрепление пройденного
Ответы
Глава 7. Строки
Литералы строк
Строки в действии
Строковые методы
Выражения форматирования строк
Метод форматирования строк
Общие категории типов
В заключение
Закрепление пройденного
Глава 8. Списки и словари
Списки
Списки в действии
Словари
Словари в действии
В заключение
Закрепление пройденного
Глава 9. Кортежи, файлы и все остальное
Кортежи
Кортежи в действии
Файлы
Пересмотренный перечень категорий типов
Гибкость объектов
Ссылки и копии
Сравнивание, равенство и истина
Иерархии типов данных в языке Python
Другие типы в Python
Ловушки встроенных типов
В заключение
Закрепление пройденного
Часть III. Инструкции и синтаксис
Глава 10. Введение в инструкции языка Python
Структура программы на языке Python
История о двух if
Короткий пример: интерактивные циклы
В заключение
Закрепление пройденного
Глава 11. Присваивание, выражения и print
Инструкции присваивания
Инструкции выражений
Операция print
В заключение
Закрепление пройденного
Глава 12. Условная инструкция if и синтаксические правила
Условные инструкции if
Синтаксические правила языка Python
Проверка истинности
Трехместное выражение if/else
В заключение
Закрепление пройденного
Глава 13. Циклы while и for
Циклы while
break, continue, pass и else
Циклы for
Приемы программирования циклов
В заключение
Закрепление пройденного
Глава 14. Итерации и генераторы, часть 1
Итераторы: первое знакомство
Генераторы списков: первое знакомство
Новые итерируемые объекты в Python 3.0
Другие темы, связанные с итераторами
В заключение
Закрепление пройденного
Глава 15. Документация
Источники документации в языке Python
Типичные ошибки программирования
В заключение
Закрепление пройденного
Часть IV. Функции
Глава 16. Основы функций
Зачем нужны функции?
Создание функций
Первый пример: определения и вызовы
Второй пример: пересечение последовательностей
В заключение
Закрепление пройденного
Глава 17. Области видимости
Области видимости в языке Python
Инструкция global
Области видимости и вложенные функции
Инструкция nonlocal
В заключение
Закрепление пройденного
Глава 18. Аргументы
Передача аргументов
Специальные режимы сопоставления аргументов
Функция поиска минимума
Универсальные функции для работы с множествами
Имитация функции print в Python 3.0
В заключение
Закрепление пройденного
Глава 19. Расширенные возможности функций
Концепции проектирования функций
Рекурсивные функции
Функции - это объекты: атрибуты и аннотации
Анонимные функции: lambda
Отображение функций на последовательности: map
Средства функционального программирования: filter и reduce
В заключение
Закрепление пройденного
Глава 20. Итераторы и генераторы
Еще раз о генераторах списков: функциональные инструменты
Еще раз об итераторах: генераторы
Краткая сводка по синтаксису генераторов в 3.0
Хронометраж итерационных альтернатив
Типичные ошибки при работе с функциями
В заключение
Закрепление пройденного
Часть V. Модули
Глава 21. Модули: общая картина
Зачем нужны модули?
Архитектура программы на языке Python
Как работает импорт
Путь поиска модулей
В заключение
Закрепление пройденного
Глава 22. Основы программирования модулей
Создание модуля
Использование модулей
Пространства имен модулей
Повторная загрузка модулей
В заключение
Закрепление пройденного
Глава 23. Пакеты модулей
Основы операции импортирования пакетов
Пример импортирования пакета
Когда используется операция импортирования пакетов?
Импортирование относительно пакета
В заключение
Закрепление пройденного
Глава 24. Дополнительные возможности модулей
Сокрытие данных в модулях
Включение будущих возможностей языка
Смешанные режимы использования: __name__ и __main__
Изменение пути поиска модулей
Расширение as для инструкций import и from
Модули - это объекты: метапрограммы
Импортирование модулей по имени в виде строки
Транзитивная перезагрузка модулей
Концепции проектирования модулей
Типичные проблемы при работе с модулями
В заключение
Закрепление пройденного
Часть VI. Классы и ООП
Глава 25. ООП: общая картина
Зачем нужны классы?
ООП с высоты 30 000 футов
В заключение
Закрепление пройденного
Глава 26. Основы программирования классов
Классы генерируют множество экземпляров объектов
Классы адаптируются посредством наследования
Классы могут переопределять операторы языка Python
Самый простой в мире класс на языке Python
Классы и словари
В заключение
Закрепление пройденного
Глава 27. Более реалистичный пример
Шаг 1: создание экземпляров
Шаг 2: добавление методов, определяющих поведение
Шаг 3: перегрузка операторов
Шаг 4: адаптация поведения с помощью подклассов
Шаг 5: адаптация конструкторов
Шаг 6: использование инструментов интроспекции
Шаг 7 (последний): сохранение объектов в базе данных
Рекомендации на будущее
В заключение
Закрепление пройденного
Глава 28. Подробнее о программировании классов
Инструкция class
Методы
Наследование
Пространства имен: окончание истории
Еще раз о строках документирования
Классы и модули
В заключение
Закрепление пройденного
Глава 29. Перегрузка операторов
Доступ к элементам по индексу и извлечение срезов: __getitem__ и __setitem__
Итерации по индексам: __getitem__
Итераторы: __iter__ и __next__
Проверка на вхождение: __contains__, __iter__ и __getitem__
Обращения к атрибутам: __getattr__ и __setattr__
Строковое представление объектов: __repr__ и __str__
Правостороннее сложение и операция приращения: __radd__ и __iadd__
Операция вызова: __call__
Функциональные интерфейсы и программный код обратного вызова
Сравнивание: __lt__, __gt__ и другие
Проверка логического значения: __bool__ и __len__
В заключение
Закрепление пройденного
Глава 30. Шаблоны проектирования с классами
Python и ООП
ООП и наследование: взаимосвязи типа "является"
ООП и композиция: взаимосвязи типа "имеет"
ООП и делегирование: объекты­обертки
Псевдочастные атрибуты класса
Методы - это объекты: связанные и несвязанные методы
Множественное наследование: примесные классы
Классы - это объекты: универсальные фабрики объектов
Прочие темы, связанные с проектированием
В заключение
Закрепление пройденного
Глава 31. Дополнительные возможности классов
Расширение встроенных типов
Классы "нового стиля"
Изменения в классах нового стиля
Другие расширения в классах нового стиля
Статические методы и методы класса
Декораторы и метаклассы: часть 1
Типичные проблемы при работе с классами
В заключение
Закрепление пройденного
Часть VII. Исключения и инструменты
Глава 32. Основы исключений
Зачем нужны исключения?
Обработка исключений: краткий обзор
В заключение
Закрепление пройденного
Глава 33. Особенности использования исключений
Инструкция try/except/else
Инструкция try/finally
Объединенная инструкция try/except/finally
Инструкция raise
Инструкция assert
Контекстные менеджеры with/as
В заключение
Закрепление пройденного
Глава 34. Объекты исключений
Исключения: назад в будущее
Исключения на основе классов
В чем преимущества иерархий исключений?
Классы встроенных исключений
Определение текста исключения
Передача данных в экземплярах и реализация поведения
В заключение
Закрепление пройденного
Глава 35. Использование исключений
Вложенные обработчики исключений
Идиомы исключений
Советы по применению и типичные проблемы исключений
Заключение по основам языка
В заключение
Закрепление пройденного
Часть VIII. Расширенные возможности
Глава 36. Юникод и строки байтов
Изменения в Python 3.0, касающиеся строк
Основы строк
Примеры использования строк в Python 3.0
Кодирование строк Юникода
Использование объектов bytes в Python 3.0
Использование объектов bytearray в 3.0 (и 2.6)
Использование текстовых и двоичных файлов
Использование файлов Юникода
Другие инструменты для работы со строками в Python 3.0
В заключение
Закрепление пройденного
Глава 37. Управляемые атрибуты
Зачем нужно управлять атрибутами?
Свойства
Дескрипторы
__getattr__ и __getattribute__
Пример: проверка атрибутов
В заключение
Закрепление пройденного
Глава 38. Декораторы
Что такое декоратор?
Основы
Программирование декораторов функций
Программирование декораторов классов
Непосредственное управление функциями и классами
Пример: "частные" и "общедоступные" атрибуты
Пример: проверка аргументов функций
В заключение
Закрепление пройденного
Глава 39. Метаклассы
Нужны или не нужны метаклассы
Модель метаклассов
Объявление метаклассов
Программирование метаклассов
Пример: добавление методов в классы
Пример: применение декораторов к методам
В заключение
Закрепление пройденного
Часть IX. Приложения
Приложение A. Установка и настройка
Установка интерпретатора Python
Настройка Python
Параметры командной строки интерпретатора
Дополнительная информация
Приложение B. Решения упражнений
Часть I. Введение
Часть II. Типы и операции
Часть III. Инструкции и синтаксис
Часть IV. Функции
Часть V. Модули
Часть VI. Классы и ООП
Часть VII. Исключения и инструменты
Алфавитный указатель