Книга на вашем родном языке 6 2 Переводы 7 1 Доступные переводы переводы 7 3 Предисловие 16
Скачать 0.72 Mb.
|
A Byte of Python (Russian) Версия 2.02 Swaroop C H (Перевод: Владимир Смоляр) 26 апреля 2020 Оглавление 1 Обложка 1 1.1 «Укус Питона» – «A Byte of Python» по-русски 1 1.2 Кто читает «A Byte of Python»? 1 1.3 Лицензия 5 1.4 Читать 5 1.5 Купить книгу 6 1.6 Скачать 6 1.7 Книга на вашем родном языке 6 2 Переводы 7 2.1 Доступные переводыпереводы 7 3 Предисловие 16 3.1 Для кого эта книга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2 Немного истории . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3 Состояние книги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4 Официальная веб-страница . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.5 К размышлению . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4 Введение 19 4.1 Особенности Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.2 Python 2 против 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.3 Что говорят программисты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5 Установка 24 5.1 Установка в GNU/Linux и BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.2 Установка в Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.3 Для пользователей Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.4 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 i 6 Первые шаги 28 6.1 Использование командной строки интерпретатора . . . . . . . . . . . . . . . 28 6.2 Выбор редактора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.3 Использование программных файлов . . . . . . . . . . . . . . . . . . . . . . . 30 6.4 Получение помощи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.5 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 7 Основы 36 7.1 Комментарии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 7.2 Литеральные константы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 7.3 Числа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 7.4 Строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 7.5 Переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 7.6 Имена идентификаторов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.7 Типы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.8 Объекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.9 Логические и физические строки . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.10 Отступы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 7.11 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 8 Операторы и выражения 47 8.1 Операторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 8.2 Порядок вычисления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 8.3 Изменение порядка вычисления . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.4 Ассоциативность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.5 Выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.6 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 9 Поток команд 55 9.1 Оператор if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 9.2 Оператор while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 9.3 Цикл for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 9.4 Оператор break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 9.5 Оператор continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 9.6 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 10 Функции 64 10.1 Параметры функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 10.2 Локальные переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 10.3 Зарезервированное слово «global» . . . . . . . . . . . . . . . . . . . . . . . . . 67 10.4 Зарезервированное слово «nonlocal» . . . . . . . . . . . . . . . . . . . . . . . 68 10.5 Значения аргументов по умолчанию . . . . . . . . . . . . . . . . . . . . . . . 69 10.6 Ключевые аргументы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 10.7 Переменное число параметров . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 10.8 Только ключевые параметры . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 ii 10.9 Оператор «return» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 10.10 Строки документации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 10.11 Аннотации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 10.12 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 11 Модули 76 11.1 Файлы байткода .pyc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 11.2 Оператор from … import … . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 11.3 Имя модуля – __name__ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 11.4 Создание собственных модулей . . . . . . . . . . . . . . . . . . . . . . . . . . 80 11.5 Функция dir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 11.6 Пакеты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 11.7 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 12 Структуры данных 85 12.1 Список . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 12.2 Краткое введение в объекты и классы . . . . . . . . . . . . . . . . . . . . . . . 85 12.3 Кортеж . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 12.4 Словарь . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 12.5 Последовательности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 12.6 Множество . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 12.7 Ссылки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 12.8 Ещё о строках . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 12.9 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 13 Решение задач 98 13.1 Задача . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 13.2 Решение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 13.3 Вторая версия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 13.4 Третья версия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 13.5 Четвёртая версия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 13.6 Дополнительные усовершенствования . . . . . . . . . . . . . . . . . . . . . . 106 13.7 Процесс разработки программного обеспечения . . . . . . . . . . . . . . . . 107 13.8 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 14 Объектно-ориентированное программирование 108 14.1 self . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 14.2 Классы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 14.3 Методы объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 14.4 Метод __init__ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 14.5 Переменные класса и объекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 14.6 Наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 14.7 Метаклассы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 14.8 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 iii 15 Ввод-вывод 121 15.1 Ввод от пользователя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 15.2 Файлы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 15.3 Pickle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 15.4 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 16 Исключения 126 16.1 Ошибки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 16.2 Исключения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 16.3 Обработка исключений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 16.4 Вызов исключения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 16.5 Try .. Finally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 16.6 Оператор with . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 16.7 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 17 Стандартная библиотека 132 17.1 Модуль sys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 17.2 Модуль logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 17.3 Серия «Модуль недели» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 17.4 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 18 Дополнительно 136 18.1 Передача кортежей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 18.2 Специальные методы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 18.3 Блоки в одно выражение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 18.4 Lambda-формы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 18.5 Генераторы списков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 18.6 Передача кортежей и словарей в функции . . . . . . . . . . . . . . . . . . . . 139 18.7 exec и eval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 18.8 Оператор assert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 18.9 Функция repr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 18.10 Управляющие последовательности . . . . . . . . . . . . . . . . . . . . . . . . 141 18.11 Необрабатываемые строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 18.12 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 19 Что дальше 143 19.1 Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 19.2 Примеры программ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 19.3 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 19.4 Советы и рекомендации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 19.5 Учебники . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 19.6 Видео . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 19.7 Обсуждение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 19.8 Новости . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 19.9 Установка библиотек . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 iv 19.10 Графические программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 19.11 Резюме по инструментам ГИП . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 19.12 Различные реализации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 19.13 Функциональное программирование (для хорошо подготовленных чита- телей) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 19.14 Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 20 Приложение: FLOSS 149 20.1 Free/Libre and Open Source Software (FLOSS) . . . . . . . . . . . . . . . . . . . 149 21 Приложение: о книге 152 21.1 Колофон . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 21.2 Об авторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 22 Приложение: История версий 154 23 Приложение: Инструкция по переводу 158 v Введение Python – один из тех редких языков программирования, которые одновременно претен- дуют на звание простых и мощных. Вас приятно удивит то, как легко можно сосредото- читься на решении поставленной задачи, а не на синтаксисе и структуре языка, на кото- ром вы программируете. Официально Python представляют так: Python – это простой в освоении и мощный язык программирования. Он предоставляет эффективные высокоуровневые структуры данных, а также простой, но эффективный подход к объектно-ориентированному программи- рованию. Его элегантный синтаксис и динамическая типизация наряду с тем, что он является интерпретируемым, делают его идеальным языком для напи- сания сценариев и быстрой разработки приложений в различных областях и на большинстве платформ. В следующем разделе мы рассмотрим эти особенности более детально. История названия Гвидо ван Россум, создатель языка Python, назвал его так в честь телешоу на BBC под названием «Летающий цирк Монти Пайтона» 1 , а вовсе не потому, что он любит змей, убивающих животных обвиванием своего длинного тела вокруг них и задавливанием. 4.1 Особенности Python 4.1.1 Простой Python – простой и минималистичный язык. Чтение хорошей программы на Python очень напоминает чтение английского текста, хотя и достаточно строгого! Такая псевдо-кодовая природа Python является одной из его самых сильных сторон. Она позволяет вам сосре- доточиться на решении задачи, а не на самом языке. 1 «Monty Python’s Flying Circus» (прим.перев.) 19 A Byte of Python (Russian), Версия 2.02 4.1.2 Лёгкий в освоении Как вы увидите, на Python чрезвычайно легко начать программировать. Python обладает исключительно простым синтаксисом, как уже отмечалось выше. 4.1.3 Свободный и открытый Python – это пример свободного и открытого программного обеспечения – FLOSS (Free/Libré and Open Source Software). Проще говоря, вы имеете право свободно распро- странять копии этого программного обеспечения, читать его исходные тексты, вносить изменения, а также использовать его части в своих программах. В основе свободного ПО лежит идея сообщества, которое делится своими знаниями. Это одна из причин, по ко- торым Python так хорош: он был создан и постоянно улучшается сообществом, которое просто хочет сделать его лучше. 4.1.4 Язык высокого уровня При написании программы на Python вам никогда не придётся отвлекаться на такие низ- коуровневые детали, как управление памятью, используемой вашей программой, и т.п. 4.1.5 Портируемый Благодаря своей открытой природе, Python был портирован на много платформ (т.е. из- менён таким образом, чтобы работать на них). Все ваши программы смогут запускаться на любой из этих платформ без каких-либо изменений, если только вы избегали исполь- зования системно-зависимых функций. Python можно использовать в GNU/Linux, Windows, FreeBSD, Macintosh, Solaris, OS/2, Amiga, AROS, AS/400, BeOS, OS/390, z/OS, Palm OS, QNX, VMS, Psion, Acorn RISC OS, VxWorks, PlayStation, Sharp Zaurus, Windows CE и даже на PocketPC! Вы можете даже использовать такую платформу, как Kivy для создания игр для iOS (iPhone, iPad) и Android. 4.1.6 Интерпретируемый Это требует некоторого пояснения. Программа, написанная на компилируемом языке программирования, как например, C или C++, преобразуется из исходного языка (т.е. C или C++) в язык, понятный компью- теру (бинарный код, т.е. нули и единицы) при помощи компилятора с применением 4.1. Особенности Python 20 A Byte of Python (Russian), Версия 2.02 разнообразных флагов и параметров. Когда вы запускаете такую программу, компонов- щик/загрузчик копирует программу с диска в оперативную память и запускает её. Python же, напротив, не требует компиляции в бинарный код. Программа просто выполня- ется из исходного текста. Python сам преобразует этот исходный текст в некоторую про- межуточную форму, называемую байткодом, а затем переводит его на машинный язык и запускает. Всё это заметно облегчает использование Python, поскольку нет необходимо- сти заботиться о компиляции программы, подключении и загрузке нужных библиотек и т.д. Вместе с тем, это делает программы на Python намного более переносимыми, так как достаточно их просто скопировать на другой компьютер, и они работают! 4.1.7 Объектно-ориентированный Python поддерживает как процедурно-ориентированное, так и объектно- ориентированное программирование. В процедурно-ориентированных языках программы строятся на основе процедур или функций, которые представляют собой просто-напросто многократно используемые фрагменты программы. В объектно-ориентированных язы- ках программирования программы строятся на основе объектов, объединяющих в себе данные и функционал. Python предоставляет простые, но мощные средства для ООП, особенно в сравнении с такими большими языками программирования, как C++ или Java. 4.1.8 Расширяемый Если вам нужно, чтобы некоторая критическая часть программы работала очень быстро или вы вынуждены скрыть часть алгоритма, вы можете написать эту часть программы на C или C++, а затем вызывать её из программы на Python. 4.1.9 Встраиваемый Python можно встраивать в программы на C/C++, чтобы предоставлять возможности на- писания сценариев их пользователям. 4.1.10 Обширные библиотеки Стандартная библиотека Python просто огромна. Она может помочь в решении самых разнообразных задач, связанных с использованием регулярных выражений, генерирова- нием документации, проверкой блоков кода, распараллеливанием процессов, базами дан- ных, веб-браузерами, CGI, FTP, электронной почтой, XML, XML-RPC, HTML, WAV файла- ми, криптографией, GUI (графическим интерфейсом пользователя) и другими системно- зависимыми вещами. Помните, что всё это доступно абсолютно везде, где установлен Python. В этом заключается философия Python «Всё включено». |