Оглавление
Содержание
Об авторе
Об иллюстрации на обложке
Предисловие
"Экосистема" этой книги
О пятом издании
Линейки Python 2.Х и Python З.Х
Современная история Python 2.Х/З.Х
Раскрытие линеек Python З.Х и Python 2.Х
Какая версия Python должна использоваться?
Предпосылки и усилия
Структура этой книги
Чем эта книга не является
Это не справочник и не руководство по специфическим приложениям
Это не краткая история для спешащих людей
Изложение последовательно до той степени, до которой позволяет Python
Программы в книге
Версии Python
Платформы
Загрузка кода примеров для книги
Использование кода, сопровождающего книгу
Соглашения, используемые в этой книге
Ждем ваших отзывов!
Благодарности
Предыстория
Благодарности Python
Личные благодарности
ЧАСТЬ I Начало работы
ГЛАВА 1. Python в вопросах и ответах
Почему люди используют Python?
Качество программного обеспечения
Продуктивность труда разработчиков
Является ли Python "языком написания сценариев"?
Хорошо, но в чем недостаток?
Кто использует Python в наши дни?
Что можно делать с помощью Python?
Системное программирование
Графические пользовательские интерфейсы
Написание сценариев для Интернета
Интеграция компонентов
Программирование для баз данных
Быстрое прототипирование
Численное и научное программирование
И еще: игры, изображения, глубинный анализ данных, роботы, электронные таблицы Excel...
Как Python разрабатывается и поддерживается?
Компромиссы, связанные с открытым кодом
Каковы технические превосходства Python?
Он объектно-ориентированный и функциональный
Он бесплатный
Он переносимый
Он мощный
Он смешиваемый
Он относительно прост в использовании
Он относительно прост в изучении
Он назван в честь группы "Монти Пайтон”
Как Python соотносится с языком X?
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 2. Как Python выполняет программы
Введение в интерпретатор Python
Выполнение программ
Точка зрения программиста
Точка зрения Python
Разновидности модели выполнения
Альтернативные реализации Python
Инструменты оптимизации выполнения
Фиксированные двоичные файлы
Будущие возможности?
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 3. Как пользователь выполняет программы
Интерактивная подсказка
Запуск интерактивного сеанса
Пути поиска в системе
Новые возможности для Windows в версии Python 3.3: переменная среды path и запускающий модуль
Где выполнять: каталоги для кода
Что не набирать: приглашения к вводу и комментарии
Интерактивное выполнение кода
Для чего нужна интерактивная подсказка?
Замечания по использованию: интерактивная подсказка
Командная строка системы и файлы
Первый сценарий
Запуск файлов в командной строке
Варианты использования командной строки
Замечания по использованию: командная строка и файлы
Исполняемые сценарии в стиле Unix: #!
Основы сценариев Unix
Трюк с поиском посредством env в Unix
Запускающий модуль для Windows в версии Python 3.3: #! приходит в Windows
Щелчки на значках файлов
Основы щелчков на значках
Щелчки на значках в Windows
Трюк с использованием функции input в Windows
Другие ограничения, связанные со щелчками на значках
Импортирование и повторная загрузка модулей
Основы импортирования и повторной загрузки
Дополнительная история о модулях: атрибуты
Замечания по использованию: import и reload
Использование ехес для выполнения файлов модулей
Пользовательский интерфейс IDLE
Детали запуска IDLE
Базовое использование IDLE
Удобные функциональные возможности IDLE
Расширенные инструменты IDLE
Замечания по использованию: IDLE
Другие IDE-среды
Другие варианты запуска
Встраивание вызовов
Фиксированные двоичные исполняемые файлы
Варианты запуска из текстовых редакторов
Прочие варианты запуска
Будущие возможности?
Какой вариант должен использоваться?
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
Проверьте свои знания: упражнения для части I
ЧАСТЬ II Типы и операции
ГЛАВА 4. ведение в типы объектов Python
Концептуальная иерархия Python
Для чего используются встроенные типы?
Основные типы данных Python
Числа
Строки
Операции над последовательностями
Неизменяемость
Методы, специфичные для типа
Получение справки
Другие способы написания строк
Строки Unicode
Сопоставление с образцом
Списки
Операции над последовательностями
Операции, специфичные для типа
Контроль границ
Вложение
Списковые включения
Словари
Операции над отображениями
Снова о вложении
Недостающие ключи: проверки if
Сортировка ключей: циклы for
Итерация и оптимизация
Кортежи
Для чего используются кортежи?
Файлы
Файлы с двоичными байтами
Файлы с текстом Unicode
Другие инструменты, подобные файлам
Прочие основные типы
Как нарушить гибкость кода
Классы, определяемые пользователем
Все остальное
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 5. Числовые типы
Основы числовых типов
Числовые литералы
Встроенные инструменты для обработки объектов чисел
Операции выражений Python
Числа в действии
Переменные и базовые выражения
Форматы числового отображения
Сравнения: нормальные и сцепленные
Деление: классическое, с округлением
в меньшую сторону и настоящее
Точность целых чисел
Комплексные числа
Шестнадцатеричная, восьмеричная и двоичная формы записи: литералы и преобразования
Побитовые операции
Другие встроенные инструменты для обработки чисел
Другие числовые типы
Десятичные типы
Дробный тип
Множества
Булевские значения
Численные расширения
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 6. Кратко о динамической типизации
Случай отсутствия операторов объявления
Переменные, объекты и ссылки
Типы обитают в объектах, не в переменных
Объекты подвергаются сборке мусора
Разделяемые ссылки
Разделяемые ссылки и изменения на месте
Разделяемые ссылки и равенство
Динамическая типизация вездесуща
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 7. Фундаментальные основы строк
Вопросы, раскрываемые в главе
Unicode: краткая история
Основы строк
Строковые литералы
Строки в одинарных и двойных кавычках являются одинаковыми
Управляющие последовательности представляют специальные символы
Неформатированные строки подавляют управляющие последовательности
Утроенные кавычки представляют многострочные блочные строки
Строки в действии
Базовые операции
Индексация и нарезание
Инструменты преобразования строк
Изменение строк, часть I
Строковые методы
Синтаксис вызова методов
Методы строк
Примеры строковых методов: изменение строк, часть II
Примеры строковых методов: разбор текста
Другие распространенные строковые методы в действии
функции первоначального модуля string (изъяты из Python З.Х)
Выражения форматирования строк
Основы выражений форматирования
Расширенный синтаксис выражений форматирования
Более сложные примеры использования выражений форматирования
Выражения форматирования, основанные на словаре
Вызовы методов форматирования строк
Основы методов форматирования
Добавление ключей, атрибутов и смещений
Расширенный синтаксис методов форматирования
Более сложные примеры использования методов форматирования
Сравнение с выражением форматирования %
Для чего используется метод format?
Общие категории типов
Типы разделяют наборы операций по категориям
Изменяемые типы можно модифицировать на месте
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 8. Списки и словари
Списки
Списки в действии
Базовые списковые операции
Итерация по спискам и списковые включения
Индексация, нарезание и матрицы
Изменение списков на месте
Словари
Словари в действии
Базовые словарные операции
Изменение словарей на месте
Дополнительные словарные методы
Пример: база данных о фильмах
Замечания по использованию словарей
Другие способы создания словарей
Изменения в словарях в Python З.Х и 2.7
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 9. Кортежи, файлы и все остальное
Кортежи
Кортежи в действии
Для чего используются списки и кортежи?
Снова о записях: именованные кортежи
Файлы
Открытие файлов
Использование файлов
Файлы в действии
Кратко о текстовых и двоичных файлах
Хранение объектов Python в файлах: преобразования
Хранение собственных объектов Python: модуль pickle
Хранение объектов Python в формате JSON
Хранение упакованных двоичных данных: модуль struct
Диспетчеры контекстов для файлов
Другие файловые операции
Обзор и сводка по основным типам
Гибкость объектов
Ссылки или копии
Сравнения, равенство и истинность
Смысл понятий "истина" и "ложь" в Python
Иерархии типов Python
Объекты type
Прочие типы в Python
Затруднения, связанные со встроенными типами
Присваивание создает ссылки, а не копии
Повторение добавляет один уровень глубины
Остерегайтесь циклических структур данных
Неизменяемые типы нельзя модифицировать на месте
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
Проверьте свои знания: упражнения для части II
ЧАСТЬ III Операторы и синтаксис
ГЛАВА 10. Введение в операторы Python
Еще раз о концептуальной иерархии Python
Операторы Python
История о двух if
Что Python добавляет
Что Python устраняет
Для чего используется синтаксис с отступами?
Несколько специальных случаев
Короткий пример: интерактивные циклы
Простой интерактивный пример
Выполнение математических действий
над пользовательским вводом
Обработка ошибок путем проверки ввода
Обработка ошибок с помощью оператора try
Вложение кода на три уровня в глубину
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 11. Операторы присваивания, выражений и вывода
Операторы присваивания
Формы оператора присваивания
Присваивание последовательности
Расширенная распаковка последовательностей в Python З.Х
Групповые присваивания
Дополненные присваивания
Правила именования переменных
Операторы выражений
Операторы выражений и изменения на месте
Операции вывода
Функция print в Python З.Х
Оператор print в Python 2.Х
Перенаправление потока вывода
Вывод, нейтральный к версии
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 12. Проверки if и правила синтаксиса
Операторы if
Общий формат
Элементарные примеры
Множественное ветвление
Снова о синтаксисе Python
Ограничители блоков: правила отступов
Ограничители операторов: строки и продолжения
Несколько особых случаев
Значения истинности и булевские проверки
Тернарное выражение if/else
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 13. Циклы while и for
Циклы while
Общий формат
Примеры
Операторы break, continue, pass и конструкция else цикла
Общий формат цикла
Оператор pass
Оператор continue
Оператор break
Конструкция else цикла
Циклы for
Общий формат
Примеры
Методики написания циклов
Циклы с подсчетом: range
Просмотр последовательностей: while и range или for
Тасование последовательностей: range и len
Неполный обход: range или срезы
Изменение списков: range или включения
Параллельные обходы: zip и тар
Генерация смещений и элементов: enumerate
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 14. Итерации и включения
Итерации: первый взгляд
Протокол итерации: итераторы файловых объектов
Ручная итерация: iter и next
Итерируемые объекты других встроенных типов
Списковые включения: первый подробный взгляд
Основы списковых включений
Использование списковых включений с файлами
Расширенный синтаксис списковых включений
Другие итерационные контексты
Новые итерируемые объекты в Python З.Х
Влияние на код Python 2.Х: доводы за и против
Итерируемый объект range
Итерируемые объекты map, zip и filter
Итераторы с множеством проходов или с одним проходом
Итерируемые словарные представления
Другие темы, связанные с итерацией
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 15. Документация
Источники документации Python
Комментарии #
Функция dir
Строки документации: doc
PyDoc: функция help
PyDoc: отчеты в формате HTML
За рамками строк документации: Sphinx
Стандартный набор руководств
Веб-ресурсы
Изданные книги
Распространенные затруднения
при написании кода
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
Проверьте свои знания: упражнения для части III
ЧАСТЬ IV Функции и генераторы
ГЛАВА 16. Основы функций
Для чего используются функции?
Написание кода функций
Операторы def
Оператор def исполняется во время выполнения
Первый пример: определения и вызовы
Определение
Вызов
Полиморфизм в Python
Второй пример: пересечение последовательностей
Определение
Вызов
Еще раз о полиморфизме
Локальные переменные
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 17. Области видимости
Основы областей видимости в Python
Детали, касающиеся областей видимости
Распознавание имен: правило LEGB
Пример области видимости
Встроенная область видимости
Оператор global
Проектирование программы: минимизируйте количество глобальных переменных
Проектирование программы: минимизируйте количество межфайловых изменений
Другие способы доступа к глобальным переменным
Области видимости и вложенные функции
Детали вложенных областей видимости
Примеры вложенных областей видимости
Фабричные функции: замыкания
Сохранение состояния из объемлющей области видимости с помощью стандартных значений
Оператор nonlocal в Python З.Х
Основы оператора nonlocal
Оператор nonlocal в действии
Для чего используются оператор nonlocal? Варианты сохранения состояния
Состояние с помощью оператора nonlocal: только Python З.Х
Состояние с помощью глобальных переменных: только одиночная копия
Состояние с помощью классов: явные атрибуты (предварительный обзор)
Состояние с помощью атрибутов функций: Python З.Х и 2.Х
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 18. Аргументы
Основы передачи аргументов
Аргументы и разделяемые ссылки
Избегайте модификации изменяемых аргументов
Эмуляция выходных параметров и множественных результатов
Специальные режимы сопоставления аргументов
Основы сопоставления аргументов
Синтаксис сопоставления аргументов
Особенности использования специальных режимов сопоставления
Примеры ключевых слов и стандартных значений
Примеры произвольного количества аргументов
Аргументы с передачей только по ключевым словам Python З.Х
Функция min
Основная задача
Дополнительные очки
Заключение
Обобщенные функции для работы с множествами
Эмуляция функции print из Python З.Х
Использование аргументов с передачей только по ключевым словам
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 19. Расширенные возможности функций
Концепции проектирования функций
Рекурсивные функции
Суммирование с помощью рекурсии
Альтернативные варианты кода
Операторы цикла или рекурсия
Обработка произвольных структур
Объекты функций: атрибуты и аннотации
Косвенные вызовы функций: "первоклассные" объекты
Интроспекция функций
Аннотации функций в Python З.Х
Анонимные функции: выражения lambda
Основы выражения lambda
Для чего используется выражение lambda?
Как (не) запутать свой код на Python
Области видимости: выражения lambda также могут быть вложенными
Инструменты функционального программирования
Отображение функций на итерируемые объекты: тар
Выбор элементов из итерируемых объектов: filter
Комбинирование элементов из итерируемых объектов: reduce
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 20. Включения и генераторы
Списковые включения и инструменты функционального программирования
Списковые включения или тар
Добавление проверок и вложенных циклов: filter
Пример: списковые включения и матрицы
Не злоупотребляйте списковыми включениями: KISS
Генераторные функции и выражения
Генераторные функции: yield или return
Генераторные выражения: итерируемые объекты встречаются с включениями
Генераторные функции или генераторные выражения
Генераторы являются объектами с одиночной итерацией
Генерация во встроенных типах, инструментах и классах
Пример: генерация перемешанных последовательностей
Не злоупотребляйте генераторами: EIBTI
Пример: эмуляция zip и шар с помощью итерационных инструментов
Сводка по синтаксису включений
Области видимости и переменные включений
Осмысление включений множеств и словарей
Расширенный синтаксис включений для множеств и словарей
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 21. Оценочные испытания
Измерение времени выполнения итерационных альтернатив
Модуль измерения времени: любительский
Сценарий измерения времени
Результаты измерения времени
Альтернативные версии модуля для измерения времени
Другие варианты
Измерение времени выполнения итераций и версий Python с помощью модуля timeit
Базовое использование timeit
Модуль и сценарий оценочных испытаний: timeit
Результаты запуска сценария оценочных испытаний
Продолжаем забавляться с оценочными испытаниями
Другие темы, связанные с оценочными испытаниями: тест руstone
Затруднения, связанные с функциями
Локальные имена распознаются статически
Стандартные значения и изменяемые объекты
Функции без операторов return
Прочие затруднения, связанные с функциями
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
Проверьте свои знания: упражнения для части IV
ЧАСТЬ V Модули и пакеты
ГЛАВА 22. Модули: общая картина
Для чего используются модули?
Архитектура программы Python
Структурирование программы
Импортирование и атрибуты
Стандартные библиотечные модули
Как работает импортирование
1. Поиск файла модуля
2. Компиляция файла модуля (возможная)
3. Выполнение файла модуля
Файлы байт-кода: pycacheв Python 3.2+
Модели файлов байт-кода в действии
Путь поиска модулей
Конфигурирование пути поиска
Вариации пути поиска
Список sys.path
Выбор файла модуля
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 23. Основы написания модулей
Создание модулей
Имена файлов модулей
Другие виды модулей
Использование модулей
Оператор import
Оператор from
Оператор from *
Операции импортирования происходят только однократно
Операторы import и from являются присваиваниями
Эквивалентность import и from
Потенциальные затруднения, связанные с оператором from
Пространства имен модулей
Файлы генерируют пространства имен
Словари пространств имен: _idiet
Уточнение имен атрибутов
Импортирование или области видимости
Вложение пространств имен
Перезагрузка модулей
Основы использования reload
Пример использования reload
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 24. Пакеты модулей
Основы импортирования пакетов
Пакеты и настройки пути поиска
Файлы init .ру пакетов
Пример импортирования пакетов
Использование from или import с пакетами
Для чего используется импортирование пакетов?
История о трех системах
Относительное импортирование пакетов
Изменения в Python З.Х
Основы относительного импортирования
Для чего используются операции относительного импортирования?
Границы действия операций относительного импортирования
Сводка по правилам поиска модулей
Операции относительного импортирования в действии
Затруднения, связанные с операциями импортирования относительно пакетов: смешанное использование
Пакеты пространств имен, введенные в Python 33
Семантика пакетов пространств имен
Влияние на обычные пакеты: необязательность init .ру
Пакеты пространств имен в действии
Вложение пакетов пространств имен
Файлы по-прежнему имеют приоритет над каталогами
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
ГЛАВА 25. Расширенные возможности модулей
Концепции проектирования модулей
Сокрытие данных в модулях
Сведение к минимуму вреда от from *: _х и all
Включение будущих языковых средств: future
Смешанные режимы использования: name и main
Модульное тестирование с помощью name
Пример: код с двойным режимом
Символы валют: Unicode в действии
Строки документации: документация по модулям в работе
Изменение пути поиска модулей
Расширение as для операторов import и from
Пример: модули являются объектами
Импортирование модулей по строкам с именами
Выполнение строк с кодом
Прямые вызовы: два варианта
Пример: транзитивная перезагрузка модулей
Инструмент рекурсивной перезагрузки
Альтернативные реализации
Затруднения, связанные с модулями
Конфликты имен модулей: операции импортирования пакетов и относительно пакетов
Порядок следования операторов в коде верхнего уровня имеет значение
Оператор from копирует имена, но не ссылки на них
Форма оператора from* может сделать
неясным смысл переменных
Функция reload может не оказывать влияния на результаты операторов импортирования from
reload, from и тестирование в интерактивном сеансе
Рекурсивные операции импортирования from могут не работать
Резюме
Проверьте свои знания: контрольные вопросы
Проверьте свои знания: ответы
Проверьте свои знания: упражнения для части V
ПРИЛОЖЕНИЕ Решения упражнений, приводимых в конце частей
Часть I, "Начало работы"
Часть II, "Типы и операции"
Часть III, "Операторы и синтаксис"
Часть IV, "функции и генераторы"
Часть М, "Модули и пакеты"
Предметный указатель
更多信息……