Softerra Компьютерра | Ferrа | Инфо-Бизнес | Домашний компьютер | Game.exe 
Softerra - лучший русский сайт о софте
Rambler's Top100

 Статья рубрики "Linuxоид"

Язык программирования Python - стандартная библиотека.

Четвертая статья цикла лекций о прекрасном языке программирования Python. На этот раз рассмотрены такие интересные вопросы как использование стандартной библиотеки, сетевых протоколов и других модулей.

[27.09.2001, Олег Бройтман, phd@phd.pp.ru]

Страница 1 из 2
  1  2  Следующая страница >>

Язык программирования Python - стандартная библиотека

Большим достоинством Python как инструмента программиста является стандартная библиотека, входящая в дистрибутив. Первое, с чем сталкивается программист - это, конечно, встроенные типы данных (я их уже рассматривал), встроенные исключения, и встроенные функции. Список их невелик, и программисты, скажем, перешедшие с Перла, привыкшие, что у них сразу есть функции для манипуляций со строками, с датой и временем, регулярные выражения - спрашивают "да есть у вас в Питоне вообще хоть что-нибудь?" Все есть, только не в списке встроенных функций, а в модулях стандартной библиотеки. Манипуляции со строками делаются с помощью модуля string, дата и время приходят из модуля time, регулярные выражения в модуле re, доступ к функциям операционной системы - модуль os, и так далее.

Рассмотрим подробнее стандартную библиотеку Питона. Библиотека состоит из нескольки разделов. Во-первых, модули, дающие доступ к внутренностям интерпретатора и особенностям языка и реализации. Во-вторых, модули для манипуляции со строками, в том числе и с юникодовыми строками. Модули, дающие доступ к системной библиотеке, в первую очередь математические функции. Модули для написания тестов в стиле Extreme Programming. Модули для (относительно) переносимого способа доступа к функциям операционной системы. В библиотеку же входит простой пошаговый отладчик и профилировщик - средство нахождения "узких мест" кода. Отдельный большой раздел библиотеки - сетевые протоколы и средства Интернет; Python - отличный инструмент для написания клиентов и серверов, CGI, парсеров HTML/XML и т.д.

Рассмотрим некоторые из этих разделов поподробнее. Первый важный модуль - sys, модуль доступа к Системе. Не операционной системе, а Системе. То есть к интерпретатору. Самая популярная функция из этого модуля - exit, то есть завершение работы интерпретатора. Впрочем, она в модуле не единственная. Еще есть функции получения информации о последнем исключении, хуки для отладчиков и профилировщиков, и тому подобные "потроха" интерпретатора. Несколько интересных переменных - стандартные потоки ввода/вывода - stdin, stdout и stderr.

Еще несколько модулей, тесно связанных с интерпретатором. Модуль gc позволяет управлять сборкой мусора. Модуль atexit дает возможность каждому модулю зарегистрировать функцию деинициализации, которая вызовется при завершении программы. В модуле types перечислены все встроенные типы данных, так что программист может выполнить проверку if type(myvar) == types.ListType...

Модуль inspect - для интроспекции объектов во время выполнения. Модуль traceback позволяет получить и распечатать информацию об исключении. Parser действительно дает доступ ко внутреннему парсеру языка, а imp позволяет управлять импортом модулей. Казалось бы, зачем им управлять? Очень просто - вдруг программа распространяется в нестандартном виде или на нестандартном носителе, скажем, в zip-файле. Тут возможность импортировать модули особенным образом программисту сильно пригодится.

Модули marshal, pickle и shelve позволяют сериализовать объекты, то есть превращать их в поток байт, который потом можно сохранить в файл или передать по сети. Впоследствии сериализованные объекты можно восстановить средствами тех же модулей. Marshal умеет сериализовать только встроенные типы данных, включая питоновский байт-код. Этот модуль используется самим интерпретатором для загрузки сохраненного байт-кода из файла при импорте модуля. Pickle не умеет сериализовать и восстанавливать байт-код, и это сделано специально, для безопасности, чтобы программист был уверен, что не получит по сети вирус в байт-коде. Зато у pickle есть средства, с помощью которых программист может управлять сериализацией и восстановлением своих объектов. Модуль shelve позволяет сохранять сериализованные объекты в дисковых хешах (BerkeleyDB, (G/N)DBM). Модули dumbdbm, dbm, gdbm, bsddb дают доступ к соответствующим встраиваемым базам данных; модуль anydbm является оболочкой с единым API, который позволяет использовать любую из имеющихся БД; модуль whichdb позволяет определить, в каком формате текущая БД.

String - модуль для манипуляции со строками без регулярных выражений. Здесь собраны функции для поиска подстроки в строке, замены и тому подобное. Регулярные выражения - в модуле re. Долгое время этот модуль был интерфейсом к библиотеке PCRE (Perl-Compatible Regular Expressions), но в Python 2.0 был полностью переписан для того чтобы работать не только с ASCII-строками, но и с юникодом. Модуль locale дает доступ к функциям локализации, имеющимся в операционной системе; при установки локали этот модуль модифицирует переменные модуля string в соответствии с установленной локалью.

Модули для интерфейса с операционной системой. Первый из них - модуль os. В нем собраны функции для для управления файловой системой и процессами. Модуль thread содержит низкоуровневый переносимый интерфейс к потокам (нитям, "легким" процессам) операционной системы. Модуль threading содержит классы-высокоуровневые оболочки модуля thread в стиле Java; здесь есть классы Thread, Lock, Condition, Event, Semaphore. Модуль mmap дает переносимый интерфейс к отображаемым в память файлам. Модули glob и fnmatch позволяют манипулировать шаблонами имен файлов. Библиотека signal позволяет устанавливать обработчики для асинхронных событий (POSIX signals в тех ОС, которые эти сигналы поддерживают).

Отдельной группой стоят модули, специфичные для юникса: posix и posixfile (низкоуровневые части модуля os), pwd и grp (доступ к функциям паролей, получение информации о пользователях и группах пользователей), модуль crypt, модули tty и pty (функции терминала и псевдотерминала), модуль fcntl (доступ к системным вызовам fcntl и ioctl), модуль resource (системные вызовы get/set-rlimit, getrusage), модуль syslog, модули pipes и cmd.

Есть модули для доступа к внешним библиотекам. Модули zlib/gzip/zipfile дают доступ к соответствующим функциям компрессии (архивирования). Модули readline и rlcompleter - к библиотеке GNU readline. Библиотеки math, cmath, random дают программисту доступ к широкому спектру математических функций.

Несколько модулей криптографии, из которых 2 для доступа не к алгоритмам шифрования и дешифрования, а к хешам - модули md5 и sha. Модули Bastion и rexec позволяют создавать защищенные среды и выполнять в них код, которому программист не доверяет, например, код, переданный по сети. Программист сам управляет степенью доверия, и сам определяет, какое подмножество встроенных функций и стандартных модулей будет доступно в такой среде.

В дистрибутив Питона входит интерфейс к графической библиотеке Tk (на самом деле в этом интерфейсе спрятан полноценный Tcl :), сами Tcl/Tk в дистрибутив не входят, их надо ставить отдельно. Есть несколько простых модулей для манипулирования аудиофайлами и файлами изображений.


Страница 1 из 2
  1  2  Следующая страница >>
Обсудить статью в форуме

Почитать на ту же тему на нашем сайте:


<< Предыдущая статья рубрикиСледующая статья рубрики >>
("Как украсить жизнь")("FreeBSD. Свободные записки о свободной системе. Инсталляция.")
Вернуться к оглавлению рубрики
Олег Бройтман
phd@phd.pp.ru
 
http://phd.pp.ru/

Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с правилами использования материалов сайта "Софтерра"


 Новые статьи на сайте

Просмотр DVD фильмов на FreeBSD

Несколько плееров для просмотра DVD в FreeBSD и немного теории

[29.10.2002, Станислав Лапшанский, "Linuxоид"]


Разбиение дисков и инсталляция Linux на LVM (часть 2)

Установка линукс на два диска с логическими томами...

[25.10.2002, Владимир Холманов, "Linuxоид"]


Домашняя фабрика грез. Часть 2

О представлении цветного изображения и прочем.

[24.10.2002, Алексей Стахнов, "Технологии"]


Более ранние статьи >>



 Новости софта

И защищает, и "расшаривает"... [17:58, 14.10.2002]

SolidShare - полезная программа для пользователей интернета


"Тощий" браузер [17:49, 14.10.2002]

Slim Browser 3.1 улучшает функциональность IE


Нужно-ненужная программа [16:05, 14.10.2002]

"Программа без особого назначения"


Более ранние новости >>



 Игры и мультимедиа. Новости

1с и Activision решили сотрудничать [18:06, 11.10.2002]

Фирма "1С" будет издавать серию игр от компании Activision в России, на территории стран СНГ и Балтии


Семнадцатый Чемпионат по онлайновым "СамоГонкам" [18:04, 11.10.2002]

В понедельник начнется настоящая игра


Распродажа пирамид [11:48, 10.10.2002]

"Пирамида. Gold Edition" в продаже


Более ранние новости >>



 Новости свободных систем

Lcrzo 4.16 [14:48, 16.10.2002]

Модифицированы некоторые модули...


KDE 3.1... забегая вперед [14:37, 16.10.2002]

Грядут большие перемены...


mnoGoSearch 3.2.7 [10:37, 15.10.2002]

Есть изменения...


Более ранние новости >>



 Пресс-релизы

Электронная цифровая подпись для Microsoft Office [15:43, 21.3.2002]

Компания MultiSoft анонсирует свою разработку – программный продукт «ЭЦП для Microsoft Office», обеспечивающую целостность и авторство электронных документов Word и Excel при их хранении и распространении через локальную или глобальную сеть.


Компания «БИФИТ» на форуме «Инфобизнес-2002» [14:14, 21.3.2002]

На проходившем с 12 по 15 марта форуме «Инфобизнес-2002» компания «БИФИТ» представила свою новую разработку iBank 2 - передовое решение для электронного банкинга.


Конвертирование позитива в негатив [13:16, 21.3.2002]

Группа разработчиков Invention Pilot, Inc выпустила новый программный продукт – Silver Pilot.


Более ранние новости >>






Информация о сервере
Copyright (c) 2000 ИД "Компьютерра"
Email: inform@softerra.ru
Телефон: (095) 232-22-63
Рейтинг@Mail.ru Создание сервера (с) 2000 Individ
Работает на Saitistika
Карта сайта
Главная страница