260 likes | 426 Views
Разные библиотеки – набор подпрограмм или классов, используемых для разработки программного обеспечения. Стандартная библиотека. преимущества: средства для работы с сетевыми протоколами средства для работы с форматами интернета расширяет доступный набор типов данных модуль collection :
E N D
Разные библиотеки –набор подпрограмм или классов, используемых для разработки программного обеспечения
Стандартная библиотека преимущества: • средства для работы с сетевыми протоколами • средства для работы с форматами интернета • расширяет доступный набор типов данных модуль collection: • набор специальных типов данных – контейнеров: orderedDict- упорядоченный(в порядке добавления элементов) словарь defaultdict - словарь, вызывающий заданную функцию для отсутствующего в нём элемента Counter - словарь, который удобно использовать для подсчёта слов Deque - двусвязанный список
пример работы двусвязного списка: >>> from collections import deque >>> d = deque('123') >>> d[1] '2' >>> d.pop() '3' >>> d.appendleft('0') >>> list(d) ['0', '1', '2‘]
SCV - для чтения и записи файла в формате scv - для работы с различными диалектами: «,», «;», табуляция (excel) пример: import csv reader = csv.reader(open("some.csv", "rb")) for row in reader: print row
конфигурационные файлы модуль ConfigParser – платформонезависим пример: [My Section] foodir=%(dir)s/whatever dir=frob version: 1.0 • разделитель ключа и значения: = или : • замена %(<ключ>)s на значение <ключ> • foodir будет равно frob/whatever
графические библиотеки • tkinter(на основе средствe tk широко распространённая в мире Linux) • WxPython«инструментарий»,набор основных строительных блоков для граф. Интерфейса, альтернатива tkinter,еще PyGTK, PyQt • pygame – для создания игр и приложений, требующих нестандартного интерфейса, визуализация какой либо информации • pil(python imaging library) – библиотека для работы с растровой графикой
примечание pygame.draw.line(window,(10,100,100),(10,200),(20,300),2) • рисование линий, затем идет цвет линии в формате (R,G,B), начальные и конечные точки линии в формате (X,Y), ширина линии pygame.draw.aaline(window,(10,100,100),(10,200),(20,300),2) • сглаженная линия pygame.init()pygame.display.set_mode((, ))pygame.display.set_caption('') - создание окна, размер, название
import pygame from pygame.locals import * pygame.init() pygame.display.set_mode((640, 480)) pygame.display.set_caption('Primerchik') import pygame from pygame.locals import * pygame.init() window = pygame.display.set_mode((640, 480)) pygame.display.set_caption('Primerchik') pygame.draw.aaline(window,(10,167,100),(515,200),(200,300),2) pygame.draw.aaline(window,(10,167,100),(51,20),(100,150),2) pygame.display.flip() while 1: pass
PygLet – также библиотека для создания приложений(например разработка игр) SDL – библиотека для работы с мультимедиа вернуться
поддержка полутоновых, бинарных, индексированных, цветных, полноцветных изображений • поддержка форматов bmp, eps, gif, jpeg, pdf, png, prm,tiff • конвертирование изображений из одного формата в другое • редактирование изображения • использование библиотекиизtkinker • поддержка множества форматов( mpeg, pcx)
программа Hello World: from Tkinter import * tk = Tk() tk.title("Hello World!") def button_clicked(): print "Hello World!" button=Button(tk,text="Press Me",command=button_clicked) button.pack(fill=BOTH) tk.mainloop()
SciPy - открытая библиотека высококачественных научных инструметов, доступ к обширному спектру математических алгоритмов - NumPy – подмножество SciPy – библиотека для работы с многомерными массивами
создание массивов • scipy.array(alist): n-мерный массив из списка a = scipy.array([[1,2,3],[4,5,6]]) • scipy.zeros(shape, dtype=float): n-мерный массив заданной формы, заполненный нулями заданного типа a = scipy.zeros(100) # 100 элементный массив нулей, тип float • scipy.ones(shape, dtype=float): n-мерный массив заданной формы, заполнены единицами заданного типа a = scipy.ones(10, int) # 10 элементный массив единиц типа int • id = scipy.eye(10,10) # 10x10 единичная матрица
b = scipy.transpose(a) # заменяет строки на столбцы для двумерной матрицы (транспонирование) • a = scipy.arange(start, stop, increment) # похож на оператор range, но создаёт не список, а массив • a = scipy.random.random((100,100)) # массив размера 100x100 содержащий значения типа float равномерно распределенные на интервале [0.,1.)(создание случайного массива)
индексирования массивов • elem = a[i,j,k] # эквивалентно a[i][j][k] но вероятно более эффективно (многомерное индексирование) • last_elem = a[-1] # последний элемент массива (отрицательное индексирование) i= scipy.array([0,1,2,1]) # массив индексов для первой оси j = scipy.array([1,2,3,4]) # массив индексов для второй оси a[i,j] # возвращает массив ([a[0,1], a[1,2], a[2,3], a[1,4]]) b = scipy.array([True, False, True, False]) a[b] # возвращает массив ([a[0], a[2]]) поскольку только b[0] и b[2] являются True
срезы массивов asection = a[10:, 30:] # отсутствие завершающего индекса подразумевает "до конца массива" bsection = b[:10, :30] # отсутствие стартового индекска подразумевает "до начала массива"
поэлементные действия над массивами c = a + b # поэлементное d = e * f #поэлементное g = -h # y = (x+1)%2 # меняет местами нули и единицы в бинарном массиве x z = w > 0.0 # возвращает булев массив указывающий какие элементы > 0.0 logspace = 10.**scipy.linspace(-6.0, -1.0, 50) # 50 равномерно распределенных точек между 1.e-06 и 1.0e-01
пример использования import sympy x = sympy.Symbol('x') y = sympy.Symbol('y')# То же самое, но используя функцию symbols() x, y = sympy.symbols ('xy') немного геометриии r = sympy.Symbol ('r') # радиус круга circle = sympy.Circle (sympy.Point (0, 0), r)# круг в начале координат sympy.pprint (circle.area) # площадь круга 2 pi*r
отображение поверхностей: >>> x, y = sympy.symbols ('xy') >>> sympy.Plot (x**2 + y**2) [0]: x**2 + y**2, 'mode=cartesian‘ поверхность можно вращать, приближать, удалять
еще библиотеки • Python Robotics(PyRo) – направлена на создание простой в использовании интерфейс для доступа и управления широкого спектра реальных и моделируемых роботов. • Soya3D – создание 3Dвидео игр • Natural Language Toolkit(NLTK) – набор библиотек и программ для символической и статистической обработки естественного языка • ADOdb - абстракции базы данных библиотеки Python, можно писать приложения последовательно, независимо от основной базы данных системы хранения информации
CherryPy— объектно-ориентированный веб-фреймворк, написанный на языке программирования Python. Спроектирован для быстрой разработки веб-приложений для сети Интернет. • Django— свободный фреймворк для веб-приложений на языке Python. Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из существенных архитектурных отличий этого фреймворка от некоторых других. Также в отличие от других фреймворков обработчики URL в Django конфигурируются явно при помощи регулярных выражений, а не выводятся автоматически из структуры моделей контроллеров.
JPype —реализующее возможность программам полный доступ к библиотекам классов Java. В отличие от Jython позволяет достичь большего быстродействия и доступ ко всем Python расширениям. • Jython — это реализация языка Python на языке Java. Программы, выполняющиеся в среде Jython могут одновременно использовать классы языков Java и Python. • PyGTK — набор Python-привязок для библиотеки GTK+(библиотека элементов интерфейса). • PyMidas - проект реализующий интерфейс из языка программирования python к библиотекам среды редукции астрономических данных MIDAS.
import cherrypy class HelloWorld(object): def index(self): return "Hello World!" index.exposed = True cherrypy.quickstart(HelloWorld()) • Импорт CherryPy заявление импорта основных CherryPy модуль. • Мы заявляем, класс с именем HelloWorld . Экземпляр этого класса является объект, который будет опубликован CherryPy . Он содержит один метод, названный индекс , который будет вызываться при корневой URL для сайта предлагается (например, http://localhost/ ). Этот метод возвращает содержимоевеб-страницы, в данном случае, 'HelloWorld!' строки. • Index.exposed = True является необходимым шагом, чтобы рассказать CherryPy , чему индекс () метод будет подвергаться . • cherrypy.quickstart (HelloWorld ()) монтирует экземпляр класса HelloWorld, и начинает встроенный веб-сервер.