Как устроен Python. Как устроен Python. Харрисон. Харрисон Мэтт
Скачать 5.41 Mb.
|
Глава 16. Словари .............................................................................................. 140 16.1. Присваивание в словарях ....................................................................... 140 16.2. Выборка значений из словаря ................................................................ 142 16.3. Оператор in ............................................................................................ 143 16.4. Сокращенный синтаксис словарей .......................................................... 144 16.5. setdefault ................................................................................................ 144 16.6. Удаление ключей ................................................................................... 147 16.7. Перебор словаря .................................................................................... 147 16.8. Итоги ..................................................................................................... 150 16.9. Упражнения ........................................................................................... 150 Глава 17. Функции ............................................................................................. 152 17.1. Вызов функций ....................................................................................... 155 17.2. Область видимости................................................................................. 156 17.3. Множественные параметры .................................................................... 158 17.4. Параметры по умолчанию ...................................................................... 159 17.5. Правила выбора имен для функций ........................................................ 161 17.6. Итоги ..................................................................................................... 162 17.7. Упражнения ............................................................................................ 162 Глава 18. Индексирование и срезы .................................................................... 163 18.1. Индексирование ..................................................................................... 163 18.2. Срезы ..................................................................................................... 164 18.3. Приращения в срезах ............................................................................. 166 18.4. Итоги ..................................................................................................... 168 18.5. Упражнения ........................................................................................... 168 Глава 19. Операции ввода/вывода с файлами .................................................... 169 19.1. Открытие файлов ................................................................................... 169 19.2. Чтение текстовых файлов ...................................................................... 171 19.3. Чтение двоичных файлов ....................................................................... 172 19.4. Перебор при работе с файлами .............................................................. 173 19.5. Запись файлов ....................................................................................... 174 19.6. Закрытие файлов ................................................................................... 175 19.7. Проектирование на основе файлов ........................................................ 177 19.8. Итоги ..................................................................................................... 178 19.9. Упражнения ........................................................................................... 178 Глава 20. Юникод .............................................................................................. 180 20.1. Историческая справка ............................................................................ 180 20.2. Основные этапы в Python ....................................................................... 183 20.3. Кодирование .......................................................................................... 185 Оглавление 11 20.4. Декодирование ...................................................................................... 187 20.5. Юникод и файлы .................................................................................... 188 20.6. Итоги ..................................................................................................... 190 20.7. Упражнения ........................................................................................... 190 Глава 21. Классы ............................................................................................... 192 21.1. Планирование класса ............................................................................. 195 21.2. Определение класса .............................................................................. 196 21.3. Создание экземпляра класса .................................................................. 201 21.4. Вызов метода ......................................................................................... 204 21.5. Анализ экземпляра................................................................................. 205 21.6. Приватный и защищенный доступ .......................................................... 206 21.7. Простая программа, моделирующая поток посетителей ......................... 207 21.8. Итоги ..................................................................................................... 209 21.9. Упражнения ........................................................................................... 209 Глава 22. Субклассирование .............................................................................. 211 22.1. Подсчет остановок ................................................................................. 214 22.2. super ...................................................................................................... 215 22.3. Итоги ..................................................................................................... 217 22.4. Упражнения ........................................................................................... 218 Глава 23. Исключения ........................................................................................ 219 23.1. «Посмотри, прежде чем прыгнуть» ........................................................ 220 23.2. «Проще просить прощения, чем разрешения» ....................................... 221 23.3. Несколько возможных исключений ........................................................ 223 23.4. finally ..................................................................................................... 225 23.5. Секция else ............................................................................................ 227 23.6. Выдача исключений ............................................................................... 228 23.7. Упаковка исключений ............................................................................. 229 23.8. Определение собственных исключений .................................................. 232 23.9. Итоги ..................................................................................................... 233 23.10. Упражнения ......................................................................................... 234 Глава 24. Импортирование библиотек ................................................................ 235 24.1. Способы импортирования ...................................................................... 236 24.2. Конфликты имен при импортировании ................................................... 239 24.3. Массовое импортирование ..................................................................... 240 24.4. Вложенные библиотеки .......................................................................... 241 24.5. Организация импортирования ................................................................ 241 24.6. Итоги ..................................................................................................... 243 24.7. Упражнения ........................................................................................... 243 12 Оглавление Глава 25. Библиотеки: пакеты и модули ............................................................ 244 25.1. Модули .................................................................................................. 244 25.2. Пакеты ................................................................................................... 244 25.3. Импортирование пакетов ....................................................................... 245 25.4. PYTHONPATH .......................................................................................... 246 25.5. sys.path .................................................................................................. 247 25.6. Итоги ..................................................................................................... 248 25.7. Упражнения ........................................................................................... 249 Глава 26. Полноценный пример ......................................................................... 250 26.1. cat.py ..................................................................................................... 250 26.2. Что делает этот код? .............................................................................. 253 26.3. Типичная структура ............................................................................... 254 26.4. #! .......................................................................................................... 255 26.5. Строка документации ............................................................................. 256 26.6. Импортирование .................................................................................... 257 26.7. Метаданные и глобальные переменные .................................................. 257 26.8. Операции с журналом ............................................................................ 259 26.9. Другие глобальные переменные ............................................................ 259 26.10. Реализация .......................................................................................... 259 26.11. Тестирование ....................................................................................... 259 26.12. if __name__ == '__main__': .................................................................. 260 26.13. __name__ ............................................................................................. 261 26.14. Итоги ................................................................................................... 262 26.15. Упражнения ......................................................................................... 263 Глава 27. В начале пути ..................................................................................... 264 Приложение А. Перемещение по файлам.......................................................... 265 А.1. Mac и UNIX .............................................................................................. 265 A.2. Windows .................................................................................................. 266 Приложение Б. Полезные ссылки ..................................................................... 267 Об авторе ....................................................................................................... 268 Научные редакторы ...................................................................................... 269 Предисловие Готовы начать свою карьеру программиста Python? Эта книга вооружит вас знаниями, которые накапливались годами, и практическим опытом, представленными в простом и доступном формате. Вместо того чтобы месяцами мониторить блоги и сайты, искать информацию по спискам рассылки и группам, это пособие позволит программисту быстро осво- иться с Python. Программирование — интересное занятие, а с Python оно еще приносит и удовольствие. Базовый синтаксис Python не только прост, но и досту- пен для любого возраста. Я преподавал язык программирования Python ученикам младшей школы, подросткам, «отраслевым» профессионалам и пенсионерам. Если вы готовы читать и набирать код на клавиатуре, то стоите в начале прекрасного пути. Как далеко вы сможете зайти — зависит только от того, насколько серьезно вы готовы потрудиться. Существует несколько уровней владения Python. Базовый синтаксис Python компактен и легко изучается. После того как вы освоите его, перед вами откроются все пути. Вы сможете читать разнообразный код Python и будете понимать его. С этого момента вы сможете изучать более сложные темы и конкретные инструментарии, участвовать в проектах с открытым кодом на Python или использовать эти знания для изучения других языков программирования. Мы рекомендуем применять следующий подход к изучению языка: про- читайте главу, сядьте за компьютер и введите примеры этой главы. Python позволяет легко взяться за программирование, избавляя разработчика от многих хлопот, связанных с запуском программ в других языках. У вас возникло искушение просто прочитать книгу? Если вы возьметесь за дело и будете действительно выполнять примеры на компьютере, вы узнаете намного больше, чем при простом чтении. От издательства Ваши замечания, предложения, вопросы отправляйте по адресу comp@ piter.com (издательство «Питер», компьютерная редакция). Мы будем рады узнать ваше мнение! На веб-сайте издательства www.piter.com вы найдете подробную инфор- мацию о наших книгах. 1 Почему Python? Python в моде! Это самый популярный язык, которому учат в универ- ситетах. Вакансии для разработчиков Python входят в число самых вы- сокооплачиваемых. Из-за бурного развития теории обработки данных знание Python быстро становится одним из самых желанных навыков для аналитиков. Операционные отделы также осваивают Python для управления подсистемами баз данных. Они осознают то, что давно из- вестно веб-разработчикам, уже использующим Python, а именно то, что Python делает их работу более продуктивной. В жизни Python наступил переломный момент. Его область применения уже не ограничивается небольшими, динамичными стартапами. Стремясь извлечь пользу из его мощи и эффективности, крупные предприятия также переходят на Python. За последний год я преподавал Python сот- ням матерых разработчиков с многолетним опытом работы в крупных компаниях, переходивших на Python. Python повышает производительность программирования. Я перешел на Python из мира Perl. На работе меня включили в команду с коллегой, хорошо владевшим Tcl. Ни один из нас не хотел переходить в другой лагерь, хотя мы оба были заинтересованы в изучении Python. За три дня наш прототип был готов — намного быстрее, чем ожидалось, и мы оба моментально забыли свои предыдущие «goto-языки». Меня при- влекло в Python прежде всего то, что этот язык казался мне абсолютно логичным. Я твердо уверен, что каждый, у кого есть хоть какой-то опыт программирования, сможет изучить основы Python всего за несколько дней. 16 Глава 1. Почему Python? Python легок в освоении. Для начинающих программистов Python станет отличным трамплином. Научиться писать простые программы очень легко, однако Python также хорошо масштабируется для сложных «корпоративных» систем. Наконец, Python подойдет для любого возрас- та — я сам видел, как люди в возрасте от 7 до 80+ лет изучали основы программирования на примере Python. 2 Какая версия Python? Эта книга написана на основе Python 3. Версия Python 2 верно служила нам много лет. Фонд Python Software Foundation, управляющий выпу- ском новых версий, заявил, что эпоха Python 2 подошла к концу. Соот- ветственно, после 2020 года язык поддерживаться не будет. Версия Python 3 существует уже в течение некоторого времени, и, как выяснилось, она не обладает полной обратной совместимостью с линей- кой 2. Если разработка начинается с нуля, беритесь за Python 3. Если вам приходится иметь дело с унаследованными системами, написанными на Python 2, не огорчайтесь. Большая часть материала книги идеально под- ходит для Python 2. Если же вы захотите сосредоточиться на Python 2, найдите предыдущее издание этой книги. 2.1. Установка Python Python 3 не устанавливается по умолчанию на большинстве платформ. Некоторые дистрибутивы Linux включают Python 3, но пользователям Windows и Mac придется установить его отдельно. Если вы используете Windows, откройте раздел загрузок на сайте Python 1 и найдите ссылку Python 3.6 Windows Installer . По ссылке загружается файл .msi , который устанавливает Python на машину с системой Windows. За- 1 https://www.python.org/download 18 Глава 2. Какая версия Python? грузите файл, откройте его двойным щелчком и выполните инструкции, чтобы завершить установку. ПРИМЕЧАНИЕ В установочной программе для Windows имеется флажок «Add Python to PATH» (Добавить Python в переменную PATH). Проследите за тем, чтобы этот флажок был установлен. В этом случае при запуске из режима команд- ной строки система будет знать, где найти исполняемый файл Python. Если флажок все же не будет установлен, откройте свойства системы (нажмите клавиши WIN+Pause или выполните команду environ из меню Пуск), откройте вкладку Дополнительно и щелкните на кнопке Переменные среды . Обновите переменную PATH и добавьте следующие пути: C:\Program Files\Python 3.6;C:\Program Files\Python 3.6\Scripts Если в вашей системе Windows включен механизм UAC (User Account Control), то путь будет выглядеть так: C:\Users\<имя_пользователя>\AppData\Local\Programs\Python\Python36 Пользователи Mac загружают с сайта Python установочную программу для Mac. ПРИМЕЧАНИЕ Другой способ установки Python основан на использовании дистрибутива Anaconda 1 . Он работает в Windows, Mac и Linux, а также предоставляет много заранее построенных двоичных файлов для выполнения научных вы- числений. Традиционно устанавливать эти библиотеки было утомительно, потому что в них были упакованы библиотеки, написанные на С и Fortran, и это требовало дополнительной настройки для компиляции. Пользователи Mac также могут присмотреться к Homebrew-версии 2 . Если вы уже знакомы с Homebrew, проблема решается простой командой brew install python3 1 https://www.anaconda.com/download/ 2 https://brew.sh |