Главная страница
Навигация по странице:

  • 11. Программирование приложений баз данных

  • 12. Регулярные выражения

  • 13. Введение в программирование графического интерфейса

  • Эпилог . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582Алфавитный указатель

  • Структура книги

  • Программирование на Python 3. Руководство издательство СимволПлюс


    Скачать 3.74 Mb.
    НазваниеРуководство издательство СимволПлюс
    Дата10.11.2022
    Размер3.74 Mb.
    Формат файлаpdf
    Имя файлаПрограммирование на Python 3.pdf
    ТипРуководство
    #780382
    страница2 из 74
    1   2   3   4   5   6   7   8   9   ...   74
    8. Усовершенствованные приемы программирования
    . . . . . . . . . . 394
    Улучшенные приемы процедурного программирования
    . . . . . . . . . . . 395
    Ветвление с использованием словарей
    . . . . . . . . . . . . . . . . . . . . . . . . 395
    Выражениягенераторы и функциигенераторы
    . . . . . . . . . . . . . . . 397
    Динамическое выполнение программного кода и динамическое импортирование
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
    Локальные и рекурсивные функции
    . . . . . . . . . . . . . . . . . . . . . . . . . 409
    Декораторы функций и методов
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
    Аннотации функций
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
    Улучшенные приемы объектноориентированного программирования
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
    Управление доступом к атрибутам
    . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
    Функторы
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
    Менеджеры контекста
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
    Дескрипторы
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
    Декораторы классов
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
    Абстрактные базовые классы
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
    Множественное наследование
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
    Метаклассы
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
    Функциональное программирование
    . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
    Частично подготовленные функции
    . . . . . . . . . . . . . . . . . . . . . . . . . . 460
    Пример: Valid.py
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
    В заключение
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
    Упражнения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465

    Оглавление
    11
    9. Процессы и потоки
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
    Делегирование работы процессам
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
    Делегирование работы потокам выполнения
    . . . . . . . . . . . . . . . . . . . . . 473
    Пример: многопоточная программа поиска слова
    . . . . . . . . . . . . . . 475
    Пример: многопоточная программа поиска дубликатов файлов
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
    В заключение
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
    Упражнения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
    10. Сети
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
    Клиент TCP
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
    Сервер TCP
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
    В заключение
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
    Упражнения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
    11. Программирование приложений баз данных
    . . . . . . . . . . . . . . . . 508
    Базы данных DBM
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
    Базы данных SQL
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
    В заключение
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
    Упражнение
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
    12. Регулярные выражения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
    Язык регулярных выражений в Python
    . . . . . . . . . . . . . . . . . . . . . . . . . 525
    Символы и классы символов
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
    Квантификаторы
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
    Группировка и сохранение
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
    Проверки и флаги
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
    Модуль для работы с регулярными выражениями
    . . . . . . . . . . . . . . . . 538
    В заключение
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
    Упражнения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
    13. Введение в программирование
    графического интерфейса
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
    Программы в виде диалога
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
    Программы с главным окном
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
    Создание главного окна
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
    Создание собственного диалога
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
    В заключение
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
    Упражнения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
    Эпилог
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
    Алфавитный указатель
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584

    Введение
    Язык Python является, пожалуй, самым простым в изучении и самым приятным в использовании из языков программирования, получив
    ших широкое распространение. Программный код на языке Python легко читать и писать, и, будучи лаконичным, он не выглядит зага
    дочным. Python – очень выразительный язык, позволяющий уместить приложение в меньшее количество строк, чем на это потребовалось бы в других языках, таких как C++ или Java.
    Python является кроссплатформенным языком: обычно одна и та же программа на языке Python может запускаться и в Windows, и в UNIX
    подобных системах, таких как Linux, BSD и Mac OS, для чего достаточ
    но просто скопировать файл или файлы, составляющие программу, на нужный компьютер; при этом даже не потребуется выполнять «сбор
    ку», или компилирование программы. Конечно, можно написать на языке Python программу, которая будет использовать некоторые ха
    рактерные особенности конкретной операционной системы, но такая необходимость возникает крайне редко, т. к. практически вся стан
    дартная библиотека языка Python и большинство библиотек сторон
    них производителей обеспечивают полную кроссплатформенность.
    Одним из основных преимуществ языка Python является наличие пол
    ной стандартной библиотеки, позволяющей обеспечить загрузку фай
    ла из Интернета, распаковку архива или создание вебсервера посред
    ством написания нескольких строк программного кода. В дополнение к ней существуют тысячи дополнительных библиотек сторонних про
    изводителей, среди которых одни обеспечивают более сложные и более мощные возможности, чем стандартная – например, библиотека для организации сетевых взаимодействий Twisted и библиотека для реше
    ния вычислительных задач NumPy; а другие предоставляют функцио
    нальность, которая слишком узконаправленно специализирована,
    чтобы ее можно было включить в стандартную библиотеку – напри
    мер, пакет моделирования SimPy. Большинство сторонних библиотек можно найти на сайте Python Package Index (каталог пакетов Python):
    pypi.python.org/pypi
    Python может использоваться для программирования в процедурном,
    в объектноориентированном и, в меньшей степени, в функциональ
    ном стиле программирования, хотя в глубине души Python – объект
    ноориентированный язык программирования. Эта книга покажет,

    14
    Введение как писать процедурные и объектноориентированные программы,
    а также расскажет об особенностях функционального программирова
    ния на языке Python.
    Цель этой книги – показать вам, как писать программы на языке Py
    thon в стиле Python 3, а после прочтения – служить хорошим справоч
    ником по этому языку. Несмотря на то, что версия Python 3 является эволюционным, а не революционным усовершенствованием Python 2,
    тем не менее в Python 3 некоторые прежние приемы программирова
    ния стали неприменимы или в них отпала необходимость. При этом появились некоторые новые приемы, позволяющие использовать пре
    имущества особенностей новой версии. Язык Python 3 более соверше
    нен, чем Python 2 – он основан на опыте многих лет использования этого языка и привносит множество новых особенностей (и ликвиди
    рует недостатки Python 2), делая его еще более приятным в использо
    вании, более удобным, более простым и более последовательным.
    Цель книги – научить языку Python, при этом в книге используются многие стандартные библиотеки, но далеко не все. Впрочем, это не проблема, так как после прочтения этой книги вы будете обладать объ
    емом знаний, достаточным, чтобы суметь воспользоваться любыми стандартными или сторонними библиотеками языка Python и даже создавать свои собственные библиотечные модули.
    Как предполагается, книга будет полезна различным группам читате
    лей, включая тех, для кого программирование – это хобби, а также студентов, научных работников, инженеров и всех тех, для кого про
    граммирование является подручным средством в их работе, и, конеч
    но же, – профессиональных программистов. Чтобы быть полезной та
    кому широкому кругу читателей – не быть скучной для хорошо подго
    товленных специалистов и одновременно оставаться доступной для менее подготовленных читателей, книга предполагает наличие у чита
    теля некоторого опыта программирования (на любом языке). В частно
    сти, предполагается наличие основных представлений о типах данных
    (таких как числа и строки), коллекциях данных (таких как множест
    ва и списки), управляющих структурах (таких как инструкции if и while) и функциях. Кроме того, некоторые примеры предполагают знание основ языка разметки HTML, а некоторые, более специализи
    рованные главы предполагают наличие базовых знаний по обсуждае
    мым темам, например, глава о базах данных предполагает знакомство с языком SQL.
    Книга структурирована таким образом, чтобы вы могли быстро дви
    гаться вперед. К концу первой главы вы уже сможете писать неболь
    шие, но полезные программы на языке Python. Каждая последующая глава вводит новые темы и часто расширяет и углубляет темы, введен
    ные в предыдущих главах. Это означает, что если вы читаете главы по
    следовательно, вы сможете остановиться в любой момент и написать законченную программу на основе знаний, полученных к этому мо

    Введение
    15
    менту, после чего продолжить чтение и узнать о существовании более совершенных и более сложных приемов. По этой причине знакомство с некоторыми темами происходит в одной главе, а более глубокое их исследование – в последующих главах.
    При изучении нового языка программирования обычно возникают две основные проблемы. Первая заключается в том, что иногда для объяс
    нения одной концепции необходимо знать другую концепцию, кото
    рая, в свою очередь, прямо или косвенно опирается на первую. Вторая проблема состоит в том, что некоторые читатели изначально могут ни
    чего не знать о данном языке программирования, и изза этого бывает очень трудно подыскать интересные или полезные примеры. В этой книге предпринята попытка решить обе проблемы, вопервых, предпо
    ложив наличие у читателя некоторого опыта программирования, и, во
    вторых, представив в главе 1 «золотой запас» языка Python – восемь основных составляющих языка, знания которых вполне достаточно,
    чтобы начать самостоятельно писать программы. Вследствие принято
    го подхода некоторые примеры в первых главах отличаются опреде
    ленной долей искусственности, так как в них используется только то,
    о чем до этого уже говорилось в книге. От главы к главе этот эффект уменьшается и полностью исчезает к главе 7; все последующие приме
    ры полностью написаны в характерном для языка Python 3 стиле.
    Книга опирается на практический подход в обучении и предлагает вам самостоятельно опробовать примеры и упражнения, чтобы приобрести практический опыт. Везде, где только возможно, в качестве примеров приводятся небольшие законченные программы, способные решать вполне реальные задачи. Все примеры и решения упражнений можно найти в Интернете по адресу www.qtrac.eu/py3book.html – каждый из них протестирован с использованием Python 3 в операционных систе
    мах Windows, Linux и Mac OS X.
    Структура книги
    В главе 1 будут представлены 8 составляющих языка Python, знания которых будет вполне достаточно для написания законченных про
    грамм. Здесь также описываются некоторые среды программирования на языке Python и приводятся два примера маленьких программ, в ка
    ждой из которых используются восемь составляющих языка Python,
    описанные ранее в этой главе.
    В главах со 2 по 5 вводятся средства процедурного программирования на языке Python, включая базовые типы данных и коллекции данных,
    а также множество полезных встроенных функций и структур управ
    ления наряду с описанием простейших приемов обработки текстовых файлов. В главе 5 рассказывается, как создавать собственные модули и пакеты, и проводится общий обзор стандартной библиотеки Python,
    чтобы вы получили представление о том, что может предложить Python

    16
    Введение
    «из коробки», и могли избежать необходимости заново изобретать ко
    лесо.
    Глава 6 представляет собой полное введение в объектноориентирован
    ное программирование на языке Python. Все сведения о процедурном программировании, которые были получены в предыдущих главах,
    попрежнему применимы, потому что объектноориентированное про
    граммирование имеет процедурную основу: например, в объектно
    ориентированном программировании используются те же самые типы данных, коллекции данных и управляющие структуры.
    Глава 7 охватывает темы записи в файлы и чтения из файлов. Для дво
    ичных файлов среди всего прочего рассматривается применение опе
    раций сжатия и произвольного доступа к содержимому файлов, а для текстовых файлов – синтаксический анализ вручную и с применением регулярных выражений. Кроме того, в этой главе будет показано, как писать и читать файлы в формате XML, включая использование эле
    ментов деревьев, DOM (Document Object Model – объектная модель до
    кумента) и SAX (Simple API for XML – простой прикладной программ
    ный интерфейс для работы с XML).
    В главе 8 повторно рассматривается материал, представленный в неко
    торых предыдущих главах, и исследуются многие современные осо
    бенности языка Python в таких областях, как типы данных, коллек
    ции данных, управляющие структуры, функции и объектноориенти
    рованное программирование. В этой главе также будет представлено множество новых функций, классов и усовершенствованных приемов,
    включая функциональное программирование – материал, который бу
    дет и полезен, и необходим.
    В остальной части книги рассматриваются более сложные темы. В гла
    ве 9 демонстрируются приемы распределения рабочей нагрузки меж
    ду несколькими процессами и потоками выполнения. Глава 10 расска
    зывает, как создавать клиентсерверные приложения, используя стан
    дартную поддержку сетевых взаимодействий языка Python. Глава 11
    охватывает вопросы программирования приложений для работы с ба
    зами данных (как с простыми файлами «DBM», хранящими пары ключзначение, так и с базами данных SQL). Глава 12 описывает и де
    монстрирует применение миниязыка регулярных выражений в Py
    thon и охватывает модуль регулярных выражений, а в главе 13 рас
    сматриваются вопросы программирования GUI (Graphical User Inter
    face – графический интерфейс пользователя).
    Большинство глав в книге достаточно объемны, объединяя взаимосвя
    занные сведения в одном месте для упрощения их поиска в будущем.
    Кроме того, главы разбиты на разделы, подразделы, а иногда и под
    подразделы, что позволяет читать их в том темпе, который устроит вас больше всего, – например, по одному разделу или подразделу за раз.

    Введение
    17
    Получение и установка Python 3
    Если в вашем распоряжении имеется современная операционная сис
    тема Mac или другая UNIXподобная система, то вполне возможно,
    что Python 3 у вас уже установлен. Проверить это можно, введя коман
    ду python

    V
    (обратите внимание, что символ V вводится в верхнем реги
    стре) в консоли (Terminal.app – в Mac OS X). Если будет выведен номер версии 3, значит Python 3 у вас уже имеется и выполнять его установ
    ку не требуется, в противном случае вам следует продолжить чтение этого раздела.
    Для операционных систем Windows и Mac OS X существуют простые в использовании установочные пакеты с графическим интерфейсом,
    которые проведут вас через все этапы процесса установки. Эти пакеты доступны по адресу www.python.org/download. Для Windows по ука
    занному адресу имеется три различных инсталлятора; загружайте тот, который подписан «Windows installer», если заранее вам точно не известно, что ваша машина оснащена процессором AMD64 или Itani
    um; в противном случае загружайте версию для своего процессора.
    Как только установочный пакет будет загружен, просто запустите его и следуйте инструкциям, появляющимся на экране.
    Для Linux, BSD и других версий UNIX самый простой способ устано
    вить Python состоит в том, чтобы воспользоваться имеющейся систе
    мой управления пакетами. В большинстве случаев Python поставляет
    ся в виде отдельных пакетов. Например, для Fedora Python поставляет
    ся в виде пакета python, а IDLE (простая среда разработки) – в виде па
    кета pythontools; при этом будьте внимательны: эти пакеты содержат
    Python 3, только если ваша версия Fedora достаточно свежая (вер
    сии 10 или выше). Аналогично в дистрибутивах на основе Debian, таких как Ubuntu, эти пакеты называются python3 и idle3 соответственно.
    Если для вашей операционной системы пакеты с Python 3 отсутству
    ют, то вам потребуется загрузить исходные тексты по адресу www.py
    thon.org/download
    и собрать Python 3 из исходных текстов. Загрузите тарболл с исходными текстами и распакуйте его либо командой tar xvfz Python3.0.tgz
    , если тарболл сжат архиватором gzip, либо коман
    дой tar xvfj Python3.0.tar.bz2, если тарболл сжат архиватором bzip2.
    Конфигурирование и сборка выполняются стандартным способом.
    Сначала перейдите во вновь созданный каталог Python3.0 с распако
    ванными исходными текстами и запустите команду ./configure. (Если вы хотите выполнить установку в свой локальный каталог, можно оп
    ределить значение параметра
    ––
    prefix
    .) Затем запустите команду make.
    Вполне возможно, что в конце сборки вы получите сообщение о том,
    что не все модули удалось собрать. Обычно это означает, что у вас от
    сутствуют необходимые для этого библиотеки или заголовочные фай
    лы. Например, если не удалось собрать модуль readline, воспользуй
    тесь системой управления пакетами и установите соответствующую

    1   2   3   4   5   6   7   8   9   ...   74


    написать администратору сайта