SlideShare a Scribd company logo
Модули и пакеты
Технологии и языки программирования
Юдинцев В. В.
Кафедра теоретической механики
Самарский университет
13 ноября 2016 г.
Содержание
1 Модули
2 Пакеты (Packages)
3 Полезные модули
math
numpy
matplotlib
scipy
pandas
sympy
Кафедра Теоретической механики Модули и пакеты 2 / 45
Модули
Модульное программирование
Модульное программирование — это организация
программы как совокупности небольших независимых
блоков — модулей.
Использование модульного программирования позволяет
упростить тестирование программы и поиск ошибок.
Кафедра Теоретической механики Модули и пакеты 4 / 45
Модули Python
В языке Питон модуль — это файл с python-кодом.
Модуль может содержать переменные, объявления
функций и классов.
Модуль может содержать и исполняемый код.
Кафедра Теоретической механики Модули и пакеты 5 / 45
Импорт модуля
my_module.py
1 def my_function_x2 ( x ) :
2 return x **2
3
4 def my_function_x3 ( x ) :
5 return x **3
main.py
1 import my_module
2
3 x = 3.0
4
5 res1 = my_module . my_function_x2 ( x )
6 res2 = my_module . my_function_x3 ( x )
Кафедра Теоретической механики Модули и пакеты 6 / 45
Импорт модуля
Импорт имён из модулей module1.py, module2.py, module3.py
import module1, module2, module3
Импорт математических функций из стандартного модуля math:
1 import math
2
3 a = math . sin ( math . pi / 4 . 0 )
4 b = math . tan ( math . radians ( 3 0 . 0 ) )
Кафедра Теоретической механики Модули и пакеты 7 / 45
Импорт выбранных имён из модуля
Импорт функций sin, cos, tan и константы π из модуля math
from math import sin, cos, tan, pi
1 from math import sin , cos , tan , pi
2
3 a = sin ( pi / 4 . 0 )
Имена из модуля используются без префикса — имени модуля.
Кафедра Теоретической механики Модули и пакеты 8 / 45
Импорт всех имён из модуля
Импорт определений всех функций и констант из модуля math
from math import *
Все определения модуля math:
1 import math
2
3 a = sin ( pi / 4 . 0 )
Импортированные имена из модуля используются без префикса
— имени модуля. При таком способе импорта возможно
перекрытие имён, если два модуля предоставляют для импорта
одно и то же имя для функции или объекта.
Кафедра Теоретической механики Модули и пакеты 9 / 45
Псевдонимы модулей
При импорте модулей им можно давать новые
имена-псевдонимы:
1 import numpy as np
2 import scipy . l i n a l g as l s
3
4 A = np . matrix ( [ [ 1 , 2 , 3] , [4 , 5 , 6] , [3 , 4 , 1 ] ] )
5 B = np . matrix ( [ [ 1 ] , [ 2 ] , [ 3 ] ] )
6
7 x = l s . solve ( A , B )
8 p r i n t ( x )
Решение матричного уравнения Ax = B:
[[ −0.66666667]
[ 1.33333333]
[ −0.33333333]]
Кафедра Теоретической механики Модули и пакеты 10 / 45
Пакеты (Packages)
Пакеты
Пакеты позволяют структурировать коллекции модулей,
составляющих большие библиотеки.
Пакеты формируются в виде иерархий каталогов с
исходными кодами
Кафедра Теоретической механики Модули и пакеты 12 / 45
Структура пакета
Пример пакета функций аналитической геометрии на плоскости
и в пространстве:
geometry
__init__.py
inplane
__init__.py
points.py
lines.py
spatial
__init__.py
points.py
lines.py
planes.py
Для того, чтобы транслятор
Python “понял”, что
просматриваемый им каталог
является каталогом с модулями в
корень такого каталога
помещается файл __init__.py
Файл __init__.py может быть
пустым или содержать код
инициализации пакета — код,
который будет выполняться при
импорте пакета
Кафедра Теоретической механики Модули и пакеты 13 / 45
Импорт модулей пакета: import
Импорт модуля points.py пакета geometry.inplane
geometry
__init__.py
inplane
__init__.py
points.py
1 import geometry . inplane . points
>> geometry . inplane . points . distance ( ( 1 , 2 ) , ( 7 , 3 ) )
>> 6.082762530298219
Фрагмент файла points.py
def distance ( p1 , p2 ) :
. . .
. . .
Кафедра Теоретической механики Модули и пакеты 14 / 45
Импорт модулей пакета: from ... import
Импорт модуля points.py пакета geometry.inplane
geometry
__init__.py
inplane
__init__.py
points.py
1 from geometry . inplane import points
2 p r i n t ( points . distance ( ( 1 , 2 ) , ( 7 , 3 ) ) )
>> 6.082762530298219
Кафедра Теоретической механики Модули и пакеты 15 / 45
Импорт модулей пакета: from ... import
Импорт имени (например, функции) из модуля points.py пакета
geometry.inplane для использования имени без префикса
модуля:
geometry
__init__.py
inplane
__init__.py
points.py
1 from geometry . inplane . points import distance
2
3 p r i n t ( distance ( ( 1 , 2 ) , ( 7 , 3 ) ) )
>> 6.082762530298219
Кафедра Теоретической механики Модули и пакеты 16 / 45
from ... import vs import
from package import item
item — пакет, модуль или имя, определённые в модуле package
import item.subitem. subsubitem
subsubitem — пакет или модуль, но не имя функции или
переменной, определённые в subitem
Кафедра Теоретической механики Модули и пакеты 17 / 45
from ... import *
Импорт всех имён, определённых в модуле
1 from mymodule import *
Если в модуле задана переменная __all__, которая определяет
список импортируемых имен, то будет импортированы только
имена из этого списка
1 _ _ a l l _ _ = ( ’ var1 ’ , ’ var2 ’ )
2
3 var1 = 10
4 var2 = 15
5
6 var3 = 30
Если переменная __all__ не определена, то импортируются все
имена, не начинающиеся с нижнего подчёркивания
Кафедра Теоретической механики Модули и пакеты 18 / 45
Поиск модулей транслятором
При импорте модуля транслятор Python ищет модуль (файл):
среди встроенных модулей, таких как math (каталоги
Python)
в каталоге файла, который импортирует модуль
в переменной окружения PYTHONPATH
Все каталоги поиска указаны в переменной sys.path:
>> import sys
>> p r i n t ( sys . path )
>> [ ’ ’ , ’ /home/ user / Programs / anaconda3 / l i b / python3
. 5 / site −packages / spyder / u t i l s / s i t e ’ , ’ /home/
user / Programs / anaconda3 / l i b / python3 .5 ’ , ’ /home/
user / Programs / anaconda3 / l i b / python3 . 5 / plat −
linux ’ , ’ /home/ user / Programs / anaconda3 / l i b /
python3 . 5 / lib −dynload ’ , . . . ]
Кафедра Теоретической механики Модули и пакеты 19 / 45
Выполнение модуля как программы
При импорте модуля код, находящийся вне определений
функций, выполнится.
Если необходимо разрешить выполнение такого кода
только при запуске модуля как программы:
1 > python . exe my_module . py
необходимо внутри модулю проверять значение
переменной __main__:
1 def my_function_B ( a ) :
2 . . .
3 def my_function_A ( a ) :
4 . . .
5 i f __name__ = ’ __main__ ’ :
6 p r i n t ( ’ Standalone running . . . ’ )
Кафедра Теоретической механики Модули и пакеты 20 / 45
Полезные модули
Модуль math
Математические функции для работы с вещественными
числами (float)
Модуль для работы с комплексными числами — cmath
Кафедра Теоретической механики Модули и пакеты 22 / 45
Импорт модуля math
Импорт модуля
1 import math
2
3 a = math . sin ( 1 . 0 )
4 p r i n t ( a )
>> 0.8414709848078965
Импорт отдельных имён модуля
1 from math import sin , cos , tan , pi
2 a = sin ( 1 . 0 )
3 b = cos ( 1 . 0 )
Импорт всех имён модуля
1 from math import *
2 a = sin ( 1 . 0 )
Кафедра Теоретической механики Модули и пакеты 23 / 45
Импорт всех имён
1 from cmath import *
2 from math import *
3
4 a = sqrt ( −0.5)
ValueError: math domain error
Имена модуля cmath переопределились модулем math, который
импортируется последним
1 import math
2 import cmath
3
4 b = cmath . sqrt ( −0.5)
Кафедра Теоретической механики Модули и пакеты 24 / 45
Преобразование числа
math.ceil(x) Округление до большего целого
math.floor(x) Округление до меньшего целого
math.trunc(x) Округление к нулю
math.fabs(x) Модуль числа
math.copysign(x,y) Модуль x со знаком числа y
Кафедра Теоретической механики Модули и пакеты 25 / 45
Сравнение вещественных чисел
Функция isclose
math.isclose(a,b,*,rel_tol=1e-09,abs_tol=0.0)
используется для проверки на равенство с заданной точностью
двух вещественных чисел.
Результат работы функции True или False
Если относительная или абсолютная погрешность чисел
меньше заданной величины, то числа считаются равными,
т.е. результат работы функции True, если выполняется
неравенство:
|a − b| ≤ max(rel_tol · max(|a|, |b|), abs_tol)
Кафедра Теоретической механики Модули и пакеты 26 / 45
Возведение в степень
math.exp(x) ex
math.log(x) lnx
math.log(x, n) lgnx
math.log10(x) lg10x
math.log2(x) lg2x
math.pow(x,y) xy
math.sqrt(x)
√
x
Кафедра Теоретической механики Модули и пакеты 27 / 45
Тригонометрические функции
math.sin(x) = sin x
math.cos(x) = cos x
math.tan(x) = tan x
math.acos(x) = arccos x
math.asin(x) = arcsin x
math.atan(x = arctan x
math.atan2(y,x) = arctan(y/x) ∈ (−π до π]
math.hypot(x,y) =
√
x2 + y2
Кафедра Теоретической механики Модули и пакеты 28 / 45
Градусы и радианы
math.degrees(x) = x × 180/π
math.radians(x) = x × π/180
Кафедра Теоретической механики Модули и пакеты 29 / 45
Константы
math.pi π = 3.141592 . . .
math.e e = 2.718281 . . .
math.inf бесконечность
math.nan не число
Кафедра Теоретической механики Модули и пакеты 30 / 45
Модуль numpy
Базовый пакет для численных методов
определяет типы данных: векторы, матрицы, многомерные
массивы
Функции для эффективной работы с матрицами
функции линейной алгебры
генераторы случайных чисел различных типов
преобразование Фурье
Кафедра Теоретической механики Модули и пакеты 31 / 45
Пример использование модуля numpy
Умножение матриц:
1 import numpy as np
2
3 m1 = np . matrix ( [ [ 1 , 2 , 3 ] , [ 5 , 5 , 6 ] ] )
4 m2 = np . matrix ( [ [ 3 , 2 ] , [ 4 , 2 ] , [ 1 , 1 ] ] )
5
6 m12 = m1*m2
7
8 p r i n t (m12)
[[14 9]
[41 26]]
Кафедра Теоретической механики Модули и пакеты 32 / 45
Пакет matplotlib
matplotlib — библиотека для построения графиков по
массивам (таблицам) данных с возможностью экспорта их в
различных форматы файлов
Вместе с NumPy, SciPy и IPython предоставляет
возможности, подобные MATLAB
Кафедра Теоретической механики Модули и пакеты 33 / 45
Пакет matplotlib
1 import matplotlib . pyplot as p l t
2 import numpy as np
3
4 x = np . arange ( 0 . 0 , np . pi * 2 . 0 , 0 . 1 )
5 y1 = np . sin ( x )
6 y2 = np . cos ( x )
7
8 p l t . plot ( x , y1 , x , y2 )
9
10 p l t . axis ( [ 0 , 2*np . pi , −1.1 , 1 . 1 ] )
11 p l t . xlabel ( ’ $  alpha$ , rad ’ )
12 p l t . ylabel ( ’ f ( x ) ’ )
13 p l t . legend ( [ ” sin ” , ” cos ” ] )
Кафедра Теоретической механики Модули и пакеты 34 / 45
Пакет matplotlib
0 1 2 3 4 5 6
α, rad
1.0
0.5
0.0
0.5
1.0
f(x)
sin
cos
Кафедра Теоретической механики Модули и пакеты 35 / 45
scipy
scipy.special
специальные функции
scipy.integration
численное интегрирование
scipy.optimize
оптимизация, решение нелинейных уравнений
scipy.interpolate
интерполирование
scipy.linalg
линейная алгебра
scipy.stats
статистика
Кафедра Теоретической механики Модули и пакеты 36 / 45
Пример использования модулей scipy
Численное решение нелинейного уравнения:
x + 2 cos x = 0
1 import numpy as np
2 from scipy . optimize import root
3
4 def func ( x ) :
5 return x + 2 * np . cos ( x )
6
7 sol = root ( func , 0 . 3 )
8 p r i n t ( sol . x )
>> array ([ −1.02986653])
Кафедра Теоретической механики Модули и пакеты 37 / 45
pandas
http://pandas.pydata.org
Пакет для эффективного анализа данных, первоначально
разработанный для анализа финансовой информации (2008).
Возможности pandas:
загрузка данных их текстовых файлов, таблиц XLS, баз
данных;
обработка таблиц и временных рядов, группировка данных,
переформатирование данных, создание сводных таблиц;
объединение наборов данных;
работа с данными большой размерности;
построение графиков.
Кафедра Теоретической механики Модули и пакеты 38 / 45
pandas
1 import pandas as pd
2 import matplotlib
3
4 data = pd . read_csv ( ” temp . dat ” )
5
6 r o l l i n g = pd . rolling_mean ( data , 20 , center = True )
7 r o l l i n g . columns =[ ”Время” , ”Средняя температура” ]
8 ax_data . s e t _ y l a b e l ( ’Температура $^ circ$C ’ )
9
10 ax_data = data . plot ( )
11 r o l l i n g . plot ( ax = ax_data )
Кафедра Теоретической механики Модули и пакеты 39 / 45
pandas
0:01:04 0:24:08 0:47:12 1:10:16 1:47:53 1:56:42 2:04:12 2:27:16 2:50:20
4
6
8
10
12
14
16
18
◦
C
Кафедра Теоретической механики Модули и пакеты 40 / 45
Загрузка данных из Сети
1 import matplotlib . pylab as p l t
2 import pandas as pd
3 import matplotlib
4 matplotlib . s t y l e . use ( ’ ggplot ’ )
5
6 data = pd . read_csv (
7 ” http : / /www. astronexus . com/ f i l e s / downloads / hygdata_v3 . csv . gz ” ,
8 compression = ” gzip ” )
9
10 data [ data [ ” d i s t ” ] <20]. plot . s c a t t e r ( x= ” x ” , y= ” y ” ,
11 s =5* data [ ” absmag ” ] , xlim =( −10 ,10) , ylim =( −10 ,10) )
12
13 p l t . xlabel ( ” x , pc ” )
14 p l t . ylabel ( ” y , pc ” )
15 p l t . savefig ( ’ s t a r s . png ’ , dpi =300)
Кафедра Теоретической механики Модули и пакеты 41 / 45
Карта ближайших звёзд
Кафедра Теоретической механики Модули и пакеты 42 / 45
sympy
http://www.sympy.org
Пакет для аналитических преобразований:
Решение уравнений
Дифференцирование функций
Интегрирование функций
Кафедра Теоретической механики Модули и пакеты 43 / 45
Решение уравнения
Решение квадратного уравнения
x2
+ 10x + 3 = 0
1 import sympy as sp
2
3 x = sp . symbols ( ’ x ’ )
4
5 f = x **2 + 10*x + 3
6
7 p r i n t ( sp . solve ( f ) )
>> [−5 − sqrt (22) , −5 + sqrt (22) ]
Кафедра Теоретической механики Модули и пакеты 44 / 45
Дифференцирование функции
Производная функции:
f = cos(x) sin2
(x)
1 import sympy as sp
2
3 x = sp . symbols ( ’ x ’ )
4
5 f = sp . cos ( x ) * sp . sin ( x ) **2
6
7 p r i n t ( sp . d i f f ( f , x ) )
>> −sin ( x ) **3 + 2* sin ( x ) * cos ( x ) **2
Кафедра Теоретической механики Модули и пакеты 45 / 45

More Related Content

PDF
Tài liệu CCNA - Lưu hành nội bộ
PDF
Juego Bingo - JAVA
DOC
лабораторна робота №1 2, 2010
PPTX
моделювання спідниці трудове навчання 8 клас
PDF
การแทรกรูปภาพ Powerpoint
PDF
แบบทดสอบบทที่ 1
DOCX
Урок №7. Практична робота №2. «Побудова інформаційних моделей» Інструктаж з БЖД
PDF
Bai giang asp.net full
Tài liệu CCNA - Lưu hành nội bộ
Juego Bingo - JAVA
лабораторна робота №1 2, 2010
моделювання спідниці трудове навчання 8 клас
การแทรกรูปภาพ Powerpoint
แบบทดสอบบทที่ 1
Урок №7. Практична робота №2. «Побудова інформаційних моделей» Інструктаж з БЖД
Bai giang asp.net full

What's hot (7)

PDF
ใบความรู้วิชาโครงงานอาชีพ2-54.pdf
PPTX
งานนำเสนอ หน่วยที่ 1 เรื่อง 1 ความรู้เบื้องต้นเกี่ยวกับโปรแกรมประมวลผลคำ
PPTX
Урок. Використання діаграм
DOC
Mau bao cao project 1
PPT
редагування даних таблиці 7 клас
PPTX
Повторення.Створення презентацій на основі шаблону
ใบความรู้วิชาโครงงานอาชีพ2-54.pdf
งานนำเสนอ หน่วยที่ 1 เรื่อง 1 ความรู้เบื้องต้นเกี่ยวกับโปรแกรมประมวลผลคำ
Урок. Використання діаграм
Mau bao cao project 1
редагування даних таблиці 7 клас
Повторення.Створення презентацій на основі шаблону
Ad

More from Theoretical mechanics department (20)

PDF
Космический мусор
PDF
PDF
PDF
Модификация механизма Йо-Йо
PDF
Python. Объектно-ориентированное программирование
PDF
Python. Обработка ошибок
PDF
Python: ввод и вывод
PDF
Основы Python. Функции
PDF
Основы языка Питон: типы данных, операторы
PDF
Машинная арифметика. Cтандарт IEEE-754
PPTX
Chaotic motions of tethered satellites with low thrust
PPTX
Docking with noncooperative spent orbital stage using probe-cone mechanism
PDF
Алгоритмы и языки программирования
PDF
Deployers for nanosatellites
PPTX
CubeSat separation dynamics
PDF
Chaotic Behavior of a Passive Satellite During Towing by a Tether
PDF
Основы MATLAB. Численные методы
PPTX
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
PPTX
On problems of active space debris removal using tethered towing
PDF
Методы решения нелинейных уравнений
Космический мусор
Модификация механизма Йо-Йо
Python. Объектно-ориентированное программирование
Python. Обработка ошибок
Python: ввод и вывод
Основы Python. Функции
Основы языка Питон: типы данных, операторы
Машинная арифметика. Cтандарт IEEE-754
Chaotic motions of tethered satellites with low thrust
Docking with noncooperative spent orbital stage using probe-cone mechanism
Алгоритмы и языки программирования
Deployers for nanosatellites
CubeSat separation dynamics
Chaotic Behavior of a Passive Satellite During Towing by a Tether
Основы MATLAB. Численные методы
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
On problems of active space debris removal using tethered towing
Методы решения нелинейных уравнений
Ad

Python: Модули и пакеты

  • 1. Модули и пакеты Технологии и языки программирования Юдинцев В. В. Кафедра теоретической механики Самарский университет 13 ноября 2016 г.
  • 2. Содержание 1 Модули 2 Пакеты (Packages) 3 Полезные модули math numpy matplotlib scipy pandas sympy Кафедра Теоретической механики Модули и пакеты 2 / 45
  • 4. Модульное программирование Модульное программирование — это организация программы как совокупности небольших независимых блоков — модулей. Использование модульного программирования позволяет упростить тестирование программы и поиск ошибок. Кафедра Теоретической механики Модули и пакеты 4 / 45
  • 5. Модули Python В языке Питон модуль — это файл с python-кодом. Модуль может содержать переменные, объявления функций и классов. Модуль может содержать и исполняемый код. Кафедра Теоретической механики Модули и пакеты 5 / 45
  • 6. Импорт модуля my_module.py 1 def my_function_x2 ( x ) : 2 return x **2 3 4 def my_function_x3 ( x ) : 5 return x **3 main.py 1 import my_module 2 3 x = 3.0 4 5 res1 = my_module . my_function_x2 ( x ) 6 res2 = my_module . my_function_x3 ( x ) Кафедра Теоретической механики Модули и пакеты 6 / 45
  • 7. Импорт модуля Импорт имён из модулей module1.py, module2.py, module3.py import module1, module2, module3 Импорт математических функций из стандартного модуля math: 1 import math 2 3 a = math . sin ( math . pi / 4 . 0 ) 4 b = math . tan ( math . radians ( 3 0 . 0 ) ) Кафедра Теоретической механики Модули и пакеты 7 / 45
  • 8. Импорт выбранных имён из модуля Импорт функций sin, cos, tan и константы π из модуля math from math import sin, cos, tan, pi 1 from math import sin , cos , tan , pi 2 3 a = sin ( pi / 4 . 0 ) Имена из модуля используются без префикса — имени модуля. Кафедра Теоретической механики Модули и пакеты 8 / 45
  • 9. Импорт всех имён из модуля Импорт определений всех функций и констант из модуля math from math import * Все определения модуля math: 1 import math 2 3 a = sin ( pi / 4 . 0 ) Импортированные имена из модуля используются без префикса — имени модуля. При таком способе импорта возможно перекрытие имён, если два модуля предоставляют для импорта одно и то же имя для функции или объекта. Кафедра Теоретической механики Модули и пакеты 9 / 45
  • 10. Псевдонимы модулей При импорте модулей им можно давать новые имена-псевдонимы: 1 import numpy as np 2 import scipy . l i n a l g as l s 3 4 A = np . matrix ( [ [ 1 , 2 , 3] , [4 , 5 , 6] , [3 , 4 , 1 ] ] ) 5 B = np . matrix ( [ [ 1 ] , [ 2 ] , [ 3 ] ] ) 6 7 x = l s . solve ( A , B ) 8 p r i n t ( x ) Решение матричного уравнения Ax = B: [[ −0.66666667] [ 1.33333333] [ −0.33333333]] Кафедра Теоретической механики Модули и пакеты 10 / 45
  • 12. Пакеты Пакеты позволяют структурировать коллекции модулей, составляющих большие библиотеки. Пакеты формируются в виде иерархий каталогов с исходными кодами Кафедра Теоретической механики Модули и пакеты 12 / 45
  • 13. Структура пакета Пример пакета функций аналитической геометрии на плоскости и в пространстве: geometry __init__.py inplane __init__.py points.py lines.py spatial __init__.py points.py lines.py planes.py Для того, чтобы транслятор Python “понял”, что просматриваемый им каталог является каталогом с модулями в корень такого каталога помещается файл __init__.py Файл __init__.py может быть пустым или содержать код инициализации пакета — код, который будет выполняться при импорте пакета Кафедра Теоретической механики Модули и пакеты 13 / 45
  • 14. Импорт модулей пакета: import Импорт модуля points.py пакета geometry.inplane geometry __init__.py inplane __init__.py points.py 1 import geometry . inplane . points >> geometry . inplane . points . distance ( ( 1 , 2 ) , ( 7 , 3 ) ) >> 6.082762530298219 Фрагмент файла points.py def distance ( p1 , p2 ) : . . . . . . Кафедра Теоретической механики Модули и пакеты 14 / 45
  • 15. Импорт модулей пакета: from ... import Импорт модуля points.py пакета geometry.inplane geometry __init__.py inplane __init__.py points.py 1 from geometry . inplane import points 2 p r i n t ( points . distance ( ( 1 , 2 ) , ( 7 , 3 ) ) ) >> 6.082762530298219 Кафедра Теоретической механики Модули и пакеты 15 / 45
  • 16. Импорт модулей пакета: from ... import Импорт имени (например, функции) из модуля points.py пакета geometry.inplane для использования имени без префикса модуля: geometry __init__.py inplane __init__.py points.py 1 from geometry . inplane . points import distance 2 3 p r i n t ( distance ( ( 1 , 2 ) , ( 7 , 3 ) ) ) >> 6.082762530298219 Кафедра Теоретической механики Модули и пакеты 16 / 45
  • 17. from ... import vs import from package import item item — пакет, модуль или имя, определённые в модуле package import item.subitem. subsubitem subsubitem — пакет или модуль, но не имя функции или переменной, определённые в subitem Кафедра Теоретической механики Модули и пакеты 17 / 45
  • 18. from ... import * Импорт всех имён, определённых в модуле 1 from mymodule import * Если в модуле задана переменная __all__, которая определяет список импортируемых имен, то будет импортированы только имена из этого списка 1 _ _ a l l _ _ = ( ’ var1 ’ , ’ var2 ’ ) 2 3 var1 = 10 4 var2 = 15 5 6 var3 = 30 Если переменная __all__ не определена, то импортируются все имена, не начинающиеся с нижнего подчёркивания Кафедра Теоретической механики Модули и пакеты 18 / 45
  • 19. Поиск модулей транслятором При импорте модуля транслятор Python ищет модуль (файл): среди встроенных модулей, таких как math (каталоги Python) в каталоге файла, который импортирует модуль в переменной окружения PYTHONPATH Все каталоги поиска указаны в переменной sys.path: >> import sys >> p r i n t ( sys . path ) >> [ ’ ’ , ’ /home/ user / Programs / anaconda3 / l i b / python3 . 5 / site −packages / spyder / u t i l s / s i t e ’ , ’ /home/ user / Programs / anaconda3 / l i b / python3 .5 ’ , ’ /home/ user / Programs / anaconda3 / l i b / python3 . 5 / plat − linux ’ , ’ /home/ user / Programs / anaconda3 / l i b / python3 . 5 / lib −dynload ’ , . . . ] Кафедра Теоретической механики Модули и пакеты 19 / 45
  • 20. Выполнение модуля как программы При импорте модуля код, находящийся вне определений функций, выполнится. Если необходимо разрешить выполнение такого кода только при запуске модуля как программы: 1 > python . exe my_module . py необходимо внутри модулю проверять значение переменной __main__: 1 def my_function_B ( a ) : 2 . . . 3 def my_function_A ( a ) : 4 . . . 5 i f __name__ = ’ __main__ ’ : 6 p r i n t ( ’ Standalone running . . . ’ ) Кафедра Теоретической механики Модули и пакеты 20 / 45
  • 22. Модуль math Математические функции для работы с вещественными числами (float) Модуль для работы с комплексными числами — cmath Кафедра Теоретической механики Модули и пакеты 22 / 45
  • 23. Импорт модуля math Импорт модуля 1 import math 2 3 a = math . sin ( 1 . 0 ) 4 p r i n t ( a ) >> 0.8414709848078965 Импорт отдельных имён модуля 1 from math import sin , cos , tan , pi 2 a = sin ( 1 . 0 ) 3 b = cos ( 1 . 0 ) Импорт всех имён модуля 1 from math import * 2 a = sin ( 1 . 0 ) Кафедра Теоретической механики Модули и пакеты 23 / 45
  • 24. Импорт всех имён 1 from cmath import * 2 from math import * 3 4 a = sqrt ( −0.5) ValueError: math domain error Имена модуля cmath переопределились модулем math, который импортируется последним 1 import math 2 import cmath 3 4 b = cmath . sqrt ( −0.5) Кафедра Теоретической механики Модули и пакеты 24 / 45
  • 25. Преобразование числа math.ceil(x) Округление до большего целого math.floor(x) Округление до меньшего целого math.trunc(x) Округление к нулю math.fabs(x) Модуль числа math.copysign(x,y) Модуль x со знаком числа y Кафедра Теоретической механики Модули и пакеты 25 / 45
  • 26. Сравнение вещественных чисел Функция isclose math.isclose(a,b,*,rel_tol=1e-09,abs_tol=0.0) используется для проверки на равенство с заданной точностью двух вещественных чисел. Результат работы функции True или False Если относительная или абсолютная погрешность чисел меньше заданной величины, то числа считаются равными, т.е. результат работы функции True, если выполняется неравенство: |a − b| ≤ max(rel_tol · max(|a|, |b|), abs_tol) Кафедра Теоретической механики Модули и пакеты 26 / 45
  • 27. Возведение в степень math.exp(x) ex math.log(x) lnx math.log(x, n) lgnx math.log10(x) lg10x math.log2(x) lg2x math.pow(x,y) xy math.sqrt(x) √ x Кафедра Теоретической механики Модули и пакеты 27 / 45
  • 28. Тригонометрические функции math.sin(x) = sin x math.cos(x) = cos x math.tan(x) = tan x math.acos(x) = arccos x math.asin(x) = arcsin x math.atan(x = arctan x math.atan2(y,x) = arctan(y/x) ∈ (−π до π] math.hypot(x,y) = √ x2 + y2 Кафедра Теоретической механики Модули и пакеты 28 / 45
  • 29. Градусы и радианы math.degrees(x) = x × 180/π math.radians(x) = x × π/180 Кафедра Теоретической механики Модули и пакеты 29 / 45
  • 30. Константы math.pi π = 3.141592 . . . math.e e = 2.718281 . . . math.inf бесконечность math.nan не число Кафедра Теоретической механики Модули и пакеты 30 / 45
  • 31. Модуль numpy Базовый пакет для численных методов определяет типы данных: векторы, матрицы, многомерные массивы Функции для эффективной работы с матрицами функции линейной алгебры генераторы случайных чисел различных типов преобразование Фурье Кафедра Теоретической механики Модули и пакеты 31 / 45
  • 32. Пример использование модуля numpy Умножение матриц: 1 import numpy as np 2 3 m1 = np . matrix ( [ [ 1 , 2 , 3 ] , [ 5 , 5 , 6 ] ] ) 4 m2 = np . matrix ( [ [ 3 , 2 ] , [ 4 , 2 ] , [ 1 , 1 ] ] ) 5 6 m12 = m1*m2 7 8 p r i n t (m12) [[14 9] [41 26]] Кафедра Теоретической механики Модули и пакеты 32 / 45
  • 33. Пакет matplotlib matplotlib — библиотека для построения графиков по массивам (таблицам) данных с возможностью экспорта их в различных форматы файлов Вместе с NumPy, SciPy и IPython предоставляет возможности, подобные MATLAB Кафедра Теоретической механики Модули и пакеты 33 / 45
  • 34. Пакет matplotlib 1 import matplotlib . pyplot as p l t 2 import numpy as np 3 4 x = np . arange ( 0 . 0 , np . pi * 2 . 0 , 0 . 1 ) 5 y1 = np . sin ( x ) 6 y2 = np . cos ( x ) 7 8 p l t . plot ( x , y1 , x , y2 ) 9 10 p l t . axis ( [ 0 , 2*np . pi , −1.1 , 1 . 1 ] ) 11 p l t . xlabel ( ’ $ alpha$ , rad ’ ) 12 p l t . ylabel ( ’ f ( x ) ’ ) 13 p l t . legend ( [ ” sin ” , ” cos ” ] ) Кафедра Теоретической механики Модули и пакеты 34 / 45
  • 35. Пакет matplotlib 0 1 2 3 4 5 6 α, rad 1.0 0.5 0.0 0.5 1.0 f(x) sin cos Кафедра Теоретической механики Модули и пакеты 35 / 45
  • 36. scipy scipy.special специальные функции scipy.integration численное интегрирование scipy.optimize оптимизация, решение нелинейных уравнений scipy.interpolate интерполирование scipy.linalg линейная алгебра scipy.stats статистика Кафедра Теоретической механики Модули и пакеты 36 / 45
  • 37. Пример использования модулей scipy Численное решение нелинейного уравнения: x + 2 cos x = 0 1 import numpy as np 2 from scipy . optimize import root 3 4 def func ( x ) : 5 return x + 2 * np . cos ( x ) 6 7 sol = root ( func , 0 . 3 ) 8 p r i n t ( sol . x ) >> array ([ −1.02986653]) Кафедра Теоретической механики Модули и пакеты 37 / 45
  • 38. pandas http://pandas.pydata.org Пакет для эффективного анализа данных, первоначально разработанный для анализа финансовой информации (2008). Возможности pandas: загрузка данных их текстовых файлов, таблиц XLS, баз данных; обработка таблиц и временных рядов, группировка данных, переформатирование данных, создание сводных таблиц; объединение наборов данных; работа с данными большой размерности; построение графиков. Кафедра Теоретической механики Модули и пакеты 38 / 45
  • 39. pandas 1 import pandas as pd 2 import matplotlib 3 4 data = pd . read_csv ( ” temp . dat ” ) 5 6 r o l l i n g = pd . rolling_mean ( data , 20 , center = True ) 7 r o l l i n g . columns =[ ”Время” , ”Средняя температура” ] 8 ax_data . s e t _ y l a b e l ( ’Температура $^ circ$C ’ ) 9 10 ax_data = data . plot ( ) 11 r o l l i n g . plot ( ax = ax_data ) Кафедра Теоретической механики Модули и пакеты 39 / 45
  • 40. pandas 0:01:04 0:24:08 0:47:12 1:10:16 1:47:53 1:56:42 2:04:12 2:27:16 2:50:20 4 6 8 10 12 14 16 18 ◦ C Кафедра Теоретической механики Модули и пакеты 40 / 45
  • 41. Загрузка данных из Сети 1 import matplotlib . pylab as p l t 2 import pandas as pd 3 import matplotlib 4 matplotlib . s t y l e . use ( ’ ggplot ’ ) 5 6 data = pd . read_csv ( 7 ” http : / /www. astronexus . com/ f i l e s / downloads / hygdata_v3 . csv . gz ” , 8 compression = ” gzip ” ) 9 10 data [ data [ ” d i s t ” ] <20]. plot . s c a t t e r ( x= ” x ” , y= ” y ” , 11 s =5* data [ ” absmag ” ] , xlim =( −10 ,10) , ylim =( −10 ,10) ) 12 13 p l t . xlabel ( ” x , pc ” ) 14 p l t . ylabel ( ” y , pc ” ) 15 p l t . savefig ( ’ s t a r s . png ’ , dpi =300) Кафедра Теоретической механики Модули и пакеты 41 / 45
  • 42. Карта ближайших звёзд Кафедра Теоретической механики Модули и пакеты 42 / 45
  • 43. sympy http://www.sympy.org Пакет для аналитических преобразований: Решение уравнений Дифференцирование функций Интегрирование функций Кафедра Теоретической механики Модули и пакеты 43 / 45
  • 44. Решение уравнения Решение квадратного уравнения x2 + 10x + 3 = 0 1 import sympy as sp 2 3 x = sp . symbols ( ’ x ’ ) 4 5 f = x **2 + 10*x + 3 6 7 p r i n t ( sp . solve ( f ) ) >> [−5 − sqrt (22) , −5 + sqrt (22) ] Кафедра Теоретической механики Модули и пакеты 44 / 45
  • 45. Дифференцирование функции Производная функции: f = cos(x) sin2 (x) 1 import sympy as sp 2 3 x = sp . symbols ( ’ x ’ ) 4 5 f = sp . cos ( x ) * sp . sin ( x ) **2 6 7 p r i n t ( sp . d i f f ( f , x ) ) >> −sin ( x ) **3 + 2* sin ( x ) * cos ( x ) **2 Кафедра Теоретической механики Модули и пакеты 45 / 45