Файл: Книга на вашем родном языке 6 2 Переводы 7 1 Доступные переводы переводы 7 3 Предисловие 16.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.01.2024
Просмотров: 226
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
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 «Всё включено».