79
1 Московский авиационный институт Использование Python в прикладном и web-программировании Ильин Евгений, доцент каф. 406

Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

  • Upload
    others

  • View
    36

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

1

Московский авиационный институт

Использование Python в прикладном и

web-программировании

Ильин Евгений, доцент каф. 406

Page 2: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

2

Коротко о Python

Page 3: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

3

Немного истории

Guido van Rossum (род. в 1956 г.)Создатель и Великодушный пожизненный

диктатор проекта языка Python

Первая публичная версия — 1991 год.

Page 4: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

4

Почему «Python»?

Page 5: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

5Области применения

языка Python

Настольныеприложения

Утилиты Web-сервисы

Научныеисследования

Page 6: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

6Наиболее известные компании,

использующие Python

И многие-многие другие

Page 7: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

7Конференция

Moscow Python Meetup

http://www.moscowpython.ru/

Следующая встреча 22-го декабря в Rambler&Co

Page 8: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

8

Недостатки Python

• Интерпретируемый язык.

• Скорость работы.

• Сложность реализации автоматического рефакторинга.

• Global Interpreter Lock (GIL).

Page 9: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

9

GIL

Время

Page 10: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

10

Python в научных исследованиях

Page 11: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

11Python в научных

исследованиях

• Лаконичный язык.

• Возможность быстрого создания прототипа приложений.

• Огромное количество специализированных библиотек.

• Наличие сред наподобие MATLAB / MathCAD.

• Возможность построения графиков различных типов.

Page 12: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

12Наиболее известные библиотеки

для научных вычислений

• NumPy / Scipy.

• Matplotlib.

• Pandas.

• SymPy.

• Scikit-Learn.

IPython + Jupyter

Page 13: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

13

Возможности Numpy и Scipy

• Чтение и запись текстовых данных.

• Матрицы и матричные операции.

• Математические функции.

• Преобразование Фурье.

• Генераторы псевдослучайных чисел.

• Статистические расчеты.

• Алгоритмы оптимизации.

• Алгоритмы аппроксимации и интерполяции.

• И др.

Page 14: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

14

Небольшой пример

>>> import numpy as np

>>> x = np.arange(0, 6 * np.pi, 0.01)

>>> type(x)

<class 'numpy.ndarray'>

>>> y = np.sin(x) * np.cos(3 * x)

y=sin(x )cos (3 x)

Page 15: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

15

Операции с матрицами

>>> a = numpy.array ([[1, 2, 3], [4, 5, 6]], "f")>>> print(a)[[ 1. 2. 3.] [ 4. 5. 6.]]

>>> b = numpy.array ([[0, 1, 2], [4, -1, 1]], "f")>>> print(b)[[ 0. 1. 2.] [ 4. -1. 1.]]

>>> # Поэлементное перемножение>>> c1 = a * b>>> print(c1)[[ 0. 2. 6.] [ 16. -5. 6.]]

Page 16: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

16

Операции с матрицами

>>> a = numpy.array ([[1, 2, 3], [4, 5, 6]], "f")>>> print(a)[[ 1. 2. 3.] [ 4. 5. 6.]]

>>> b = numpy.array ([[0, 1, 2], [4, -1, 1]], "f")>>> print(b)[[ 0. 1. 2.] [ 4. -1. 1.]]

>>> # Транспонирование и перемножение матриц>>> c2 = numpy.dot(a, b.T)>>> print(c2)[[ 8. 5.] [ 17. 17.]]

Page 17: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

17

Библиотека Matplotlib для построения графиков

Page 18: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

18Возможности библиотеки Matplotlib для

построения графиков

Page 19: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

19Возможности библиотеки Matplotlib для

построения графиков

Page 20: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

20Возможности библиотеки Matplotlib для

построения графиков

Page 21: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

21Возможности библиотеки Matplotlib для

построения графиков

Page 22: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

22Возможности библиотеки Matplotlib для

построения графиков

Page 23: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

23Возможности библиотеки Matplotlib для

построения графиков

Page 24: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

24

Пример построение графика

import pylabimport numpy as np

x = np.arange(0, 6 * np.pi, 0.01)y = np.sin(x) * np.cos(3 * x)

pylab.plot(x, y)pylab.grid()pylab.show()

Page 25: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

25

Пример построение графика

Page 26: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

26

Встраиваемые графики

Page 27: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

27Серия статей про использование

библиотеки Matplotlib

http://jenyay.net/Matplotlib

Page 28: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

28

Библиотека Pandas для обработки данных

Page 29: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

29

Пример текстовых данных

Page 30: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

30

Возможности библиотеки Pandas

• Работа с временными рядами.

• Работа со структурированными данными.

• Встроенные статистические функции.

• Встроенные функции для решения финансовых задач.

• Восполнение недостающих данных

• и многое другое

Page 31: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

31Пример использования

временных рядов

import numpy as np

import pandas as pd

x = np.arange(0, 6 * np.pi, 0.01)

y = np.sin(x) * np.cos(3 * x)

series = pd.Series(y, index=x)

subseries = series[np.pi / 2: np.pi]

Page 32: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

32Пример использования

временных рядов

subseries.plot()

pylab.show()

Page 33: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

33Пример использования

временных рядов

Page 34: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

34

Символьные вычисления с помощью SymPy

Page 35: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

35Примеры символьных

вычислений

>>> import sympy

>>> x = sympy.Symbol('x')>>> y = sympy.Symbol('y')

>>> print(x + x + y * y + 1)2*x + y**2 + 1

>>> sympy.pprint(x + x + y * y + 1) 2 2 x + y + 1⋅

Page 36: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

36Примеры символьных

вычислений

>>> import sympy

>>> x = sympy.Symbol('x')>>> y = sympy.Symbol('y')>>> z = (x + y) ** 2

>>> # Раскрытие скобок>>> sympy.pprint(z.expand()) 2 22 x y + x + y⋅ ⋅

Page 37: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

37Примеры символьных

вычислений

>>> import sympy

>>> x = sympy.Symbol('x')>>> y = sympy.Symbol('y')

>>> # Разложение на простые дроби>>> z = 1 / ((x+2) * (x+1))>>> sympy.pprint(sympy.apart(z, x)) 1 1 ----- - -----1 + x 2 + x

Page 38: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

38Примеры символьных

вычислений

>>> import sympy

>>> # Операции с дробями>>> a = sympy.Rational(1, 2)

>>> sympy.pprint(a)1/2

>>> sympy.pprint(a + 1)3/2

Page 39: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

39Примеры символьных

вычислений

>>> import sympy

>>> # Радиус круга>>> r = sympy.Symbol('r')

>>> # Создаем круг в начале координат радиусом r>>> circle = sympy.Circle(sympy.Point (0, 0), r)

>>> # Площадь круга>>> sympy.pprint(circle.area) 2pi r⋅

Page 40: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

40Статья

«Математический Python»

http://jenyay.net/Programming/PyMath

Page 41: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

41

IPython

Page 42: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

42

Возможности консоли IPython

Page 43: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

43

Возможности консоли IPython

Page 44: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

44

Возможности консоли IPython

Page 45: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

45

Jupyter

Page 46: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

46

Jupyter

Page 47: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

47

Jupyter

Page 48: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

48

Разработка настольных приложений

Page 49: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

49Создание приложений для

пользователей

pyInstaller / cx_Freeze / py2exe

Page 50: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

50Файлы скомпилированного

приложения

Page 51: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

51

Файлы внутри library.zip

Page 52: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

52Библиотеки для создания

пользовательского интерфейса

tkinter(Tcl/Tk)

wxPython(wxWidgets)

PyGTK(GTK+)

PyQt, PySide(Qt)

Page 53: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

53

tkinter на основе Tcl/Tk

Page 54: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

54

wxPython

https://wxpython.org/

Page 55: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

55

Преимущества wxPython

• «Родной» внешний вид приложений в разных

операционных системах.

• Сравнительно небольшой размер.

• Большое количество встроенных компонентов.

• Есть возможность встраивания графиков Matplotlib.

• Легко создаются запускаемые файлы.

Page 56: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

56

Недостатки wxPython

• Медленное развитие.

• Версия под Python 3.x находится в стадии альфа-версии.

• Есть некоторые проблемы под Ubuntu.

Page 57: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

57

wxPython

Page 58: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

58

wxPython

Page 59: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

59

OutWiker.Пример программы на wxPython

Page 60: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

60OutWiker. Пример программы на

wxPython

Page 61: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

61OutWiker. Пример программы на

wxPython

Page 62: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

62OutWiker. Особенности

реализации

● Поддержка многоязычности.● Кроссплатформенность (Windows, Linux).● Поддержка плагинов.● Перетаскиваемые панели.● Использование веб-движка WebKit (под Linux) и

Internet Explorer (под Windows).

Page 63: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

63OutWiker. Особенности

реализации

● Редактор кода на основе Scintilla.● Возможность перетаскивания файлов в окно программы.● Работа с буфером обмена.● Настраиваемые горячие клавиши.● Работа с иконкой в трее.● Использование параметров командной строки.● Проверка орфографии.

Page 64: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

64OutWiker. Используемые

библиотеки

● wxPython — графический интерфейс пользователя● Pillow — работа с изображениями● Pyenchant — проверка орфографии● pyparsing — парсер грамматики● cx_Freeze — создание запускаемых файлов● pygments — раскраска исходников

Page 65: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

65

OutWiker. Ссылки

● http://jenyay.net/Soft/Outwiker — страница программы

● http://jenyay.net/Outwiker/Plugins — список плагинов

● https://github.com/Jenyay/outwiker — исходники

Page 66: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

66

Где еще применяется Python

● Dropbox

● Google Drive

● Civilization IV

● Battlefield 2

● World of Tanks

● Blender

● GIMP

● Vim

● ...

Page 67: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

67

Разработка web-приложений

Page 68: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

68Библиотеки для создания

web-приложений

Django

Flask Tornado

Twisted

Page 69: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

69

Django

https://www.djangoproject.com/

Page 70: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

70

Почему «Django»?

Джанго Рейнхардт (1910 — 1953)

Page 71: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

71

Кто использует Django

● Instagram

● Mozilla

● The Washington Times

● Pinterest

● Bitbucket

● Disqus

Page 72: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

72

Литература по Django

2010 год. 2016 год.

Page 73: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

73

Преимущества Django

● «Батарейки прилагаются».

● Автоматическое построение таблиц баз данных по модели.

● Встроенная панель администратора.

● Интернационализация.

● Удобная работа с формами.

● Встроенный шаблонизатор.

● Встроенная защита от некоторых типов атак.

● Любые компоненты можно заменить.

Page 74: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

74

Недостатки Django

● Тяжеловесность.

● После обновлений часто что-то ломается.

● Есть вопросы к архитектуре приложений.

Page 75: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

75Примеры сайтов на Django.

http://2-3-4-5.net

Page 76: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

76Примеры сайтов на Django.

http://2-3-4-5.net

Page 77: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

77Примеры сайтов на Django.

http://2-3-4-5.net

Page 78: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

78Примеры сайтов на Django.

http://dbtwalks.ru

Page 79: Использование Python в прикладном и web ......Python в научных 11 исследованиях • Лаконичный язык. • Возможность

79

Спасибо за внимание!

Контакты:

E-mail: [email protected]

Мой сайт: http://jenyay.net

Github: https://github.com/Jenyay