Получаем позиционные аргументы с помощью * . . . . . . . . . . . . . . . 124
Получение аргументов — ключевых слов с помощью ** . . . . . . . . . 125
Строки документации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Функции — это объекты первого класса . . . . . . . . . . . . . . . . . . . . . . 126
Внутренние функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Замыкания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Анонимные функции: функция lambda() . . . . . . . . . . . . . . . . . . . . . 130
Генераторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Декораторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Пространства имен и область определения . . . . . . . . . . . . . . . . . . . . . . 134
Обработка ошибок с помощью try и except . . . . . . . . . . . . . . . . . . . . . . . 137
Создание собственных исключений . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Глава 5. Py Boxes: модули, пакеты и программы . . . . . . . . . . . . . . 142
Отдельные программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Аргументы командной строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Модули и оператор import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Импортируем модуль . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Импортируем модуль с другим именем . . . . . . . . . . . . . . . . . . . . . . . 145
Импортируем только самое необходимое . . . . . . . . . . . . . . . . . . . . . 145
Каталоги поиска модулей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Пакеты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
12
Оглавление
Стандартная библиотека Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Обработка отсутствующих ключей с помощью функций setdefault()
и defaultdict() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Подсчитываем элементы с помощью функции Counter() . . . . . . . . . . 150
Упорядочиваем по ключу с помощью OrderedDict() . . . . . . . . . . . . . 151
Стек + очередь == deque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Итерируем по структурам кода с помощью itertools . . . . . . . . . . . . . 153
Выводим данные на экран красиво с помощью функции pprint() . . . . 155
Нужно больше кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Глава 6. Ой-ой-ой: объекты и классы . . . . . . . . . . . . . . . . . . . . . . . . 157
Что такое объекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Определяем класс с помощью ключевого слова class . . . . . . . . . . . . . . . 158
Наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Перегрузка метода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Добавление метода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Просим помощи у предка с помощью ключевого слова super . . . . . . . . . 163
В защиту self . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Получаем и устанавливаем значение атрибутов с помощью
свойств . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Искажение имен для безопасности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Типы методов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Утиная типизация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Особые методы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Композиция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175