2010-11-23-Misc_Libs_v1

advertisement
Автор: Афанасьев Иван
NumPy
Python Imaging Library
Django
PyGTK
PyMidas
PyNGL
PyObjC
PyQt
PySide
Pygame
SQLAlchemy
Jpype
Matplotlib
PythonQt
CherryPy
Tornado (web server)
SciPy
Tkinter
Twisted
Стандартная библиотека Python


CherryPy— объектно-ориентированный веб-фреймворк,
написанный на языке программирования Python.
Спроектирован для быстрой разработки веб-приложений для
сети Интернет.
Django— свободный фреймворк для веб-приложений на языке
Python. Сайт на Django строится из одного или нескольких
приложений, которые рекомендуется делать отчуждаемыми и
подключаемыми. Это одно из существенных архитектурных
отличий этого фреймворка от некоторых других. Также в
отличие от других фреймворков обработчики URL в Django
конфигурируются явно при помощи регулярных выражений, а
не выводятся автоматически из структуры моделей
контроллеров.




JPype — расширение для языка программирования Python,
реализующее возможность программам полный доступ к
библиотекам классов Java. В отличие от Jython позволяет достичь
большего быстродействия и доступ ко всем Python расширениям.
Jython — это реализация языка Python на языке Java. Программы,
выполняющиеся в среде Jython могут одновременно использовать
классы языков Java и Python.
PyGTK — набор Python-привязок для
библиотеки GTK+(библиотека элементов интерфейса).
PyMidas - проект реализующий интерфейс из языка
программирования python к библиотекам среды редукции
астрономических данных MIDAS.




PyObjC — проект, позволяющий совместно использовать
библиотеки и классы таких языков программирования, как Python и
Objective-C.
PyQt — набор «привязок» графического фреймворка Qt для языка
программирования Python, выполненный в виде расширения Python.
PySide — привязка языка Python к инструментарию Qt, совместимая
на уровне API с PyQt. Проект возник в результате нежелания
создателей PyQt менять лицензионную политику для своего
проекта.
PythonQt — динамическая привязка языка Python к Qt,
лицензированная по LGPL. Предназначена для случаев, когда Python
необходимо встроить в существующие программы на C++.





Pygame это библиотека языка Python, предназначенная для
написания компьютерных игр и мультимедиа приложений.
PyNGL — свободно распространяющийся под открытой лицензией
модуль для языка программирования Python, использующийся для
визуализации научных данных с упором на высококачественную 2D
визуализацию в геонауках.
SQLAlchemy — это программное обеспечение с открытым
исходным кодом для работы с базами данных.
Tkinter— это графическая библиотека входящая в стандартный
дистрибутив Python.
Tornado - расширяемый, не блокирующий веб-сервер и фреймворк,
написанный на Python. Проект является собственность Facebook.
Модули в Python
Модуль оформляется в виде отдельного файла с исходным
кодом. Стандартные модули находятся в каталоге, где их может
найти соответствующий интерпретатор языка. Пути к каталогам,
в которых Python ищет модули, можно увидеть в значении
переменной sys.path:
>>> sys.path
['', '/usr/local/lib/python23.zip', '/usr/local/lib/python2.3',
'/usr/local/lib/python2.3/plat-linux2',
'/usr/local/lib/python2.3/lib-tk',
'/usr/local/lib/python2.3/lib-dynload',
'/usr/local/lib/python2.3/site-packages']
В среде Python без дополнительных операций импорта доступно более сотни встроенных
объектов, в основном, функций и исключений. Для удобства функции условно разделены
по категориям:

Функции преобразования типов и классы: coerce, str, repr, int, list, tuple, long, float,
complex, dict, super, file, bool, object

Числовые и строковые функции: abs, divmod, ord, pow, len, chr, unichr, hex, oct,
cmp, round, unicode

Функции обработки данных: apply, map, filter, reduce, zip, range, xrange, max,
min, iter, enumerate, sum

Функции определения свойств: hash, id, callable, issubclass, isinstance, type

Функции для доступа к внутренним структурам: locals, globals, vars, intern, dir

Функции компиляции и исполнения: eval, execfile, reload, __import__, compile

Функции ввода-вывода: input, raw_input, open

Функции для работы с атрибутами: getattr, setattr, delattr, hasattr

Функции-"украшатели" методов классов: staticmethod, classmethod, property

Прочие функции: buffer, slice
Уточнить назначение функции, ее аргументов и результата
можно в интерактивной сессии интерпретатора Python:
>>> help(len)
Help on built-in function len:
len(...)
len(object) -> integer
Return the number of items of a sequence or mapping.
Или так:
>>> print len.__doc__
len(object) -> integer
Return the number of items of a sequence or mapping.
Функции и классы из этой категории служат для преобразования типов данных.
В старых версиях Python для преобразования к нужному типу использовалась
одноименная функция. В новых версиях Python роль таких функций играют
имена встроенных классов (однако семантика не изменилась). Для понимания
сути достаточно небольшого примера:
>>> int(23.5)
23
>>> float('12.345')
12.345000000000001
>>> dict([('a', 2), ('b', 3)])
{'a': 2, 'b': 3}
>>> object
<type 'object'>
>>> class MyObject(object):
... pass
...
Функции работают с числовыми или строковыми аргументами.
abs(x)
Модуль числа x. Результат: |x|.
divmod(x, y)
Частное и остаток от деления. Результат: (частное, остаток).
pow(x, y[, m])
Возведение x в степень y по модулю m. Результат: x**y % m.
round(n[, z])
Округление чисел до заданного знака после (или до) точки.
ord(s)
Функция возвращает код (или Unicode) заданного ей символа в односимвольной
строке.
chr(n)
Возвращает строку с символом с заданным кодом.
len(s)
Возвращает число элементов последовательности или отображения.
oct(n), hex(n)
Функции возвращают строку с восьмеричным или шестнадцатеричным
представлением целого числа n.
cmp(x, y)
Сравнение двух значений. Результат: отрицательный, ноль или
положительный, в зависимости от результата сравнения.
unichr(n)
Возвращает односимвольную Unicode-строку с символом с кодом n.
unicode(s [, encoding[, errors]]) Создает Unicode-объект, соответствующий строке s в заданной
кодировке encoding. Ошибки кодирования обрабатываются в соответствии с errors, который
может принимать значения: 'strict' (строгое преобразование), 'replace' (с заменой
несуществующих символов) или 'ignore' (игнорировать несуществующие символы). По
умолчанию: encoding='utf-8', errors='strict'.
Эти функции обеспечивают доступ к некоторым встроенным атрибутам
объектов и другим свойствам. Следующий пример показывает
некоторые из этих функций:
>>> s = "abcde"
>>> s1 = "abcde"
>>> s2 = "ab" + "cde"
>>> print "hash:", hash(s), hash(s1), hash(s2)
hash: -1332677140 -1332677140 -1332677140
>>> print "id:", id(s), id(s1), id(s2)
id: 1076618592 1076618592 1076618656
Здесь, можно увидеть, что для одного и того же строкового литерала
"abcde" получается один и тот же объект, тогда как для одинаковых по
значению объектов вполне можно получить разные объекты.
Из функций этой категории особого внимания заслуживает eval(). Как следует из
названия, эта функция вычисляет переданное ей выражение. В примере ниже вычисляется
выражение, которое строится динамически:
a=2
b=3
for op in "+-*/%":
e = "a " + op + " b"
print e, "->", eval(e)
У функции eval() кроме подлежащего вычислению выражения есть еще два параметра - с их
помощью можно задать глобальное и локальное пространства имен, из которых будут
разрешаться имена выражения. Пример выше, переписанный для использования с собственным
словарем имен в качестве глобального пространства имен:
for op in "+-*/%":
e = "a " + op + " b"
print e, "->", eval(e, {'a': 2, 'b': 3})
Функцией eval() легко злоупотребить. Нужно стараться использовать ее только тогда, когда без
нее не обойтись. Из соображений безопасности не следует применять eval() для аргумента, в
котором присутствует непроверенный ввод от пользователя.
У объектов в языке Python могут быть атрибуты (в терминологии языка C++ - члены-данные и члены
функции). Следующие две программы эквивалентны:
# первая программа:
class A:
pass
a = A()
a.attr = 1
try:
print a.attr
except:
print None
del a.attr
# вторая программа:
class A:
pass
a = A()
setattr(a, 'attr', 1)
if hasattr(a, 'attr'):
print getattr(a, 'attr')
else:
print None
delattr(a, 'attr')











Сервисы периода выполнения. Модули: sys, atexit, copy, traceback, math, cmath, random,
time, calendar, datetime, sets, array, struct, itertools, locale, gettext.
Поддержка цикла разработки. Модули: pdb, hotshot, profile, unittest, pydoc. Пакеты
docutils, distutils.
Взаимодействие с ОС (файлы, процессы). Модули: os, os.path, getopt, glob, popen2,
shutil, select, signal, stat, tempfile.
Обработка текстов. Модули: string, re, StringIO, codecs, difflib, mmap, sgmllib, htmllib,
htmlentitydefs. Пакет xml.
Многопоточные вычисления. Модули: threading, thread, Queue.
Хранение данных. Архивация. Модули: pickle, shelve, anydbm, gdbm, gzip, zlib, zipfile,
bz2, csv, tarfile.
Платформо-зависимые модули. Для UNIX: commands, pwd, grp, fcntl, resource, termios,
readline, rlcompleter. Для Windows: msvcrt, _winreg, winsound.
Поддержка сети. Протоколы Интернет. Модули: cgi, Cookie, urllib, urlparse, httplib,
smtplib, poplib, telnetlib, socket, asyncore. Примеры серверов: SocketServer,
BaseHTTPServer, xmlrpclib, asynchat.
Поддержка Internet. Форматы данных. Модули: quopri, uu, base64, binhex, binascii,
rfc822, mimetools, MimeWriter, multifile, mailbox. Пакет email.
Python о себе. Модули: parser, symbol, token, keyword, inspect, tokenize, pyclbr,
py_compile, compileall, dis, compiler.
Графический интерфейс. Модуль Tkinter.









Модуль sys содержит информацию о среде выполнения программы, об
интерпретаторе Python.
Модуль copy содержит функции для копирования объектов
В модулях math, cmath собраны математические функции для действительных
и комплексных аргументов. Это те же функции, что используются в языке C.
Модуль random генерирует псевдослучайные числа для нескольких различных
распределений.
Модуль time дает функции для получения текущего времени и преобразования
форматов времени.
Модуль sets реализует тип данных для множеств.
Модули array и struct реализуют низкоуровневый массив и структуру данных.
Основное их назначение - разбор двоичных форматов данных.
Модуль itertools содержит набор функций для работы с итераторами.
Модуль locale применяется для работы с культурной средой. В конкретной
культурной среде могут использоваться свои правила для написания чисел,
валют, времени и даты и т.п.
Модули этого раздела помогают поддерживать документацию, производить
Регрессионное тестирование, отлаживать и профилировать программы на
Python, а также обслуживают распространение готовых программ, создавая
среду для конфигурирования и установки пакетов.

Модуль pdb предоставляет функции отладчика с интерфейсом - командной
строкой.

С помощью profile разработчики программного обеспечения могут узнать,
сколько времени занимает исполнение различных функций и методов.

Успех проекта зависит не только от обеспечения эффективного и
качественного кода, но и от качества документации. Утилита pydoc
аналогична команде man в Unix.
Различные операционные системы имеют свои
особенности.

Программа на Python работает в операционной системе в виде отдельного
процесса. Функции модуля os дают доступ к различным значениям,
относящимся к процессу и к среде, в которой он исполняется. Одним из
важных объектов, доступных из модуля os, является словарь переменных
окружения environ. Большая группа функций посвящена работе с файлами и
каталогами.

Модуль tempfile. Программе иногда требуется создать временный файл,
который после выполнения некоторых действий больше не нужен. Для этих
целей можно использовать функцию TemporaryFile, которая возвращает
файловый объект, готовый к записи и чтению.
Язык Python является рефлективным языком, в
котором можно "заглянуть" глубоко в собственные
внутренние структуры кода и данных. Модули этой
категории дают возможность прикоснуться к
внутреннему устройству Python.
К этой категории отнесены модули, которые работают с внешними
хранилищами данных.

Модуль pickle Процесс записи объекта в виде последовательности байтов
называется сериализацией. Для того чтобы сохранить объект во внешней
памяти или передать его по каналам связи, его нужно вначале
сериализовать. Модуль pickle позволяет сериализовывать объекты и
сохранять их в строке или файле.

Для хранения объектов в родном для Python формате можно применять
полку (shelve). По своему интерфейсу полка ничем не отличается от
словаря.

Для внешнего хранения данных можно использовать примитивные базы
данных, содержащие пары ключ-значение. В Python имеется несколько
модулей для работы с такими базами: bsddb, gdbm, dbhash и т.п.
Эта категория модулей имеет применение только для конкретных
операционных систем и семейств операционных систем. Довольно
большое число модулей в стандартной поставке Python посвящено
трем платформам: Unix, Windows и Macintosh.
При создании переносимых приложений использовать платформозависимые модули можно только при условии реализации
альтернативных веток алгоритма, либо с отказом от свойств,
которые доступны не на всех платформах. Так, под Windows не
работает достаточно обычная для Unix функция os.fork(), поэтому
при создании переносимых приложений нужно использовать другие
средства для распараллеленных вычислений, например,
многопоточность.
В документации по языку обычно отмечено, для каких платформ
доступен тот или иной модуль или даже отдельная функция.
Почти все модули из этой категории, обслуживающие
клиентскую часть протокола, построены по одному и тому
же принципу: из модуля необходим только класс, объект которого
содержит информацию о соединении с сервером, а методы
реализуют взаимодействие с сервером по соответствующему
протоколу. Таким образом, чем сложнее протокол, тем больше
методов и других деталей требуется для реализации клиента.
Примеры серверов используются по другому принципу. В модуле
с реализацией сервера описан базовый класс, из которого
пользователь модуля должен наследовать свой класс,
реализующий требуемую функциональность. Правда, иногда
замещать нужно всего один или два метода.
В стандартной библиотеке Python имеются
разноуровневые модули для работы с различными
форматами, применяющимися для кодирования данных
в сети Интернет и тому подобных приложениях.
Сегодня наиболее мощным инструментом для
обработки сообщений в формате RFC 2822 является
пакет email. С его помощью можно как разбирать
сообщения в удобном для программной обработки
виде, так и формировать сообщение на основе данных о
полях и основном содержимом (включая вложения).
Почти все современные приложения имеют графический
интерфейс пользователя. Такие приложения можно создавать и на языке
Python. В стандартной поставке имеется модуль Tkinter, который есть не
что иное, как интерфейс к языку Tcl/Tk, на котором можно описывать
графический интерфейс.
Следует отметить, что существуют и другие пакеты для
программирования графического интерфейса: wxPython (основан на
wxWindows), PyGTK и т.д. Среди этих пакетов в основном такие,
которые работают на одной платформе (реже - на двух).
Помимо возможностей программного описания графического
интерфейса, для Python есть несколько коммерческих и некоммерческих
построителей графического интерфейса (GUI builders)




http://www.intuit.ru/department/pl/python
/2/1.html
http://phd.pp.ru/Russian/Software/Python/
softerra/python4.html
http://ru.wikipedia.org/wiki/Стандартная_би
блиотека_Python
А вообще: http://www.google.ru/
Download