Такие известные компании, как Google и Intel, Cisco и Hewlett-Packard, используют язык Python, выбрав его за гибкость, простоту использования и обеспечиваемую им высокую скорость разработки. Он позволяет создавать эффективные и надежные проекты, которые легко интегрируются с программами и инструментами, написанными на других языках. Четвертое издание "Изучаем Python" - это учебник, написанный доступным языком, рассчитанный на индивидуальную скорость обучения и основанный на материалах учебных курсов, которые автор, Марк Лутц, ведет уже на протяжении десяти лет. Издание значительно расширено и дополнено в соответствии с изменениями, появившимися в новой версии 3.0. В книге представлены основные типы объектов в языке Python, порядок их создания и работы с ними, а также функции как основной процедурный элемент языка. Рассматриваются методы работы с модулями и дополнительными объектно-ориентированными инструментами языка Python - классами. Включены описания моделей и инструкций обработки исключений, а также обзор инструментов разработки, используемых при создании крупных программ. Каждая глава завершается контрольными вопросами с ответами на закрепление пройденного материала, а каждая часть - упражнениями, решения которых приведены в приложении В. Книга была дополнена примечаниями о наиболее существенных расширениях языка, появившихся в версии Python 3.1.
Об авторе Предисловие Часть 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 Отображение функций на последовательности: тар Средства функционального программирования: 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 Строковое представление объектов: герг и str Правостороннее сложение и операция приращения: radd и iadd Операция вызова: call Функциональные интерфейсы и программный код обратного вызова Сравнивание: It, 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. Приложения Приложение А. Установка и настройка Установка интерпретатора Python Настройка Python Параметры командной строки интерпретатора Дополнительная информация Приложение В. Решения упражнений Часть I. Введение Часть II. Типы и операции Часть III. Инструкции и синтаксис Часть IV. Функции Часть V. Модули Часть VI. Классы и ООП Часть VII. Исключения и инструменты Алфавитный указатель