Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

385 строки
26 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Отчёт по теме 8. Модули и структурирование программы
Выполнил Ефремов Станислав, А-02-23
## 1. Начало работы
```python
import os,sys, importlib
os.chdir('C:\\Program Files (x86)\\учёха 3 курс\\pythonsky')
os.getcwd()
'C:\\Program Files (x86)\\учёха 3 курс\\pythonsky'
```
## 2. Создание и использование модулей в среде Python
**2.1. Запуск модуля на выполнение путем его импорта**
```python
import Mod1
Mod1:Введите значение = 10
Mod1:Значение perm1= 10
type(Mod1)
<class 'module'>
dir(Mod1)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'perm1']
Mod1.perm1
'10'
importlib.reload(Mod1)
Mod1:Введите значение = 3
Mod1:Значение perm1= 3
<module 'Mod1' from 'C:\\Program Files (x86)\\учёха 3 курс\\pythonsky\\Mod1.py'>
Mod1.perm1
'3'
```
**2.2. Импортированные модули заносятся в словарь – значение атрибута sys.modules**
```python
print(sorted(sys.modules.keys()))
['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
sys.modules.pop('Mod1')
<module 'Mod1' from 'C:\\Program Files (x86)\\учёха 3 курс\\pythonsky\\Mod1.py'>
print(sorted(sys.modules.keys()))
['__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
```
**2.3. Запуск модуля на выполнение с помощью функции exec()**
```python
exec(open('Mod1.py').read())
Mod1:РведиСРµ Р·РЅР°Сение = 10
Mod1:РРЅР°Сение perm1= 10
perm1
'10'
exec(open('Mod1.py').read())
Mod1:РведиСРµ Р·РЅР°Сение = 5
Mod1:РРЅР°Сение perm1= 5
perm1
'5'
exec(open('Mod1.py').read())
Mod1:РведиСРµ Р·РЅР°Сение = 1
Mod1:РРЅР°Сение perm1= 1
perm1
'1'
```
**2.4. Использование инструкции from … import …**
```python
from Mod1 import perm1
Mod1:Введите значение = 10
Mod1:Значение perm1= 10
print(sorted(sys.modules.keys()))
['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
from Mod2 import beta
g = beta(2)
g
535.4916555247646
print(sorted(sys.modules.keys()))
['Mod1', 'Mod2', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
alpha()
Traceback (most recent call last):
File "<pyshell#32>", line 1, in <module>
alpha()
NameError: name 'alpha' is not defined
from Mod2 import alpha as al
al()
****ALPHA****
Значение t=20
'20'
del al, beta
from Mod2 import alpha as al, beta as bt
del al, bt
tt=alpha()
****ALPHA****
Значение t=0.12
uu=beta(float(tt))
uu
1.4578913609506803
```
## 3. Создание многомодульных программ
**3.1. Пример простой многомодульной программы**
```python
print(sorted(sys.modules.keys()))
['Mod1', 'Mod2', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
sys.modules.pop('Mod1')
<module 'Mod1' from 'C:\\Program Files (x86)\\учёха 3 курс\\pythonsky\\Mod1.py'>
print(sorted(sys.modules.keys()))
['Mod2', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
sys.modules.pop('Mod2')
<module 'Mod2' from 'C:\\Program Files (x86)\\учёха 3 курс\\pythonsky\\Mod2.py'>
import Mod0
Mod1:Введите значение = 0.12
Mod1:Значение perm1= 0.12
perm1= 0.12
****ALPHA****
Значение t=20
tt= 20
qq= 1.938773508354868e+27
Mod0.tt;Mod0.qq;Mod0.Mod1.perm1
'20'
1.938773508354868e+27
'0.12'
```
**3.2.**
```python
# MM1.py - Модуль с функциями моделирования звеньев системы
def usilitel(xt, k):
"""
Усилитель (пропорциональное звено)
xt - входной сигнал
k - коэффициент усиления
"""
return k * xt
def realdvig(xt, k, T, y_prev, yin_prev):
"""
Реальный двигатель (апериодическое звено 1-го порядка)
xt - входной сигнал
k - коэффициент передачи
T - постоянная времени
y_prev - предыдущее значение выходного сигнала
yin_prev - предыдущее значение внутренней переменной
Возвращает [y_current, yin_current]
"""
# Дискретная реализация апериодического звена
# Принимаем dt = 1 для простоты
dt = 1.0
yin_current = yin_prev + (xt - yin_prev) * dt / T
y_current = k * yin_current
return [y_current, yin_current]
def tahogen(xt, k, y_prev):
"""
Тахогенератор (интегрирующее звено)
xt - входной сигнал (скорость вращения)
k - коэффициент передачи
y_prev - предыдущее значение выходного сигнала
"""
# Дискретная реализация интегратора
dt = 1.0
y_current = y_prev + k * xt * dt
return y_current
def nechus(xt, Xm):
"""
Звено "зона нечувствительности"
xt - входной сигнал
Xm - половина ширины зоны нечувствительности
"""
if abs(xt) <= Xm:
return 0.0
elif xt > Xm:
return xt - Xm
else:
return xt + Xm
```
```python
# MM2.py - Модуль для ввода параметров и выполнения моделирования
# Ввод параметров
znach = input('k1,T,k2,Xm,A,F,N=').split(',')
k1 = float(znach[0]) # Коэффициент усиления двигателя
T = float(znach[1]) # Постоянная времени двигателя
k2 = float(znach[2]) # Коэффициент тахогенератора
Xm = float(znach[3]) # Половина зоны нечувствительности
A = float(znach[4]) # Амплитуда входного сигнала
F = float(znach[5]) # Частота входного сигнала (в отсчетах на период)
N = int(znach[6]) # Количество точек расчета
import math
# Формирование входного сигнала (синусоида)
vhod = []
for i in range(N):
vhod.append(A * math.sin((2 * i * math.pi) / F))
# Импорт модуля с функциями
import MM1 as mod
# Начальные условия
yi1 = 0 # Текущее значение выхода двигателя
yin1 = 0 # Внутренняя переменная двигателя
yi2 = 0 # Текущее значение выхода тахогенератора
# Моделирование системы
vyhod = []
for xt in vhod:
# Отрицательная обратная связь
xt1 = xt - yi2
# Двигатель
[yi1, yin1] = mod.realdvig(xt1, k1, T, yi1, yin1)
# Тахогенератор (интегрирует скорость)
yi2 = mod.tahogen(yin1, k2, yi2)
# Зона нечувствительности
yt = mod.nechus(yin1, Xm)
```
```python
# MM0.py - Главная программа
import MM2
print('y=',MM2.vyhod)
```
```python
import MM0
k1,T,k2,Xm,A,F,N=1.0, 0.5, 0.1, 0.0, 1.0, 10, 50
y= [0.0, 1.1755705045849463, 0.49142842708837153, 1.0772848191672721, -0.4505710647504435, -0.008171472467585539, -1.6245072748418727, -0.4098125455045718, -1.5425447657409588, 0.6252389356489807, -0.49202204828580887, 1.8992138498910875, -0.14532229025866372, 1.9282783079428205, -1.2575204798525885, 1.0042118993283922, -2.6339333643032132, 0.8044560441836737, -2.794824573139949, 2.089963486817024, -2.0372467659184075, 3.672983344585652, -2.0453009068301773, 4.082043525951689, -3.588252140025875, 3.6241234493719174, -5.488647334485205, 3.9953103882635963, -6.287709412137924, 5.979394798696542, -6.308017867292286, 8.416568876739944, -7.2647891146349135, 9.86952669966693, -9.965236982573659, 10.687003591596715, -13.27820820547795, 12.616102704686943, -15.801428746415338, 16.502930981975368, -17.926444438225467, 21.263790374205406, -21.45265998506118, 25.554322371217644, -27.290066987310063, 29.8367652640947, -34.43299054471395, 35.996820845032126, -41.63235471372037, 45.049834315781546]
import pylab
pylab.plot(MM0.MM2.vyhod)
[<matplotlib.lines.Line2D object at 0x00000204F56DA5D0>]
pylab.title('Инерционная модель')
Text(0.5, 1.0, 'Инерционная модель')
pylab.xlabel('Время')
Text(0.5, 0, 'Время')
pylab.ylabel('Выходные данные')
Text(0, 0.5, 'Выходные данные')
pylab.grid()
pylab.show()
```
![alt text](scr1.png)
**3.3. Области действия объектов в модулях**
## 3.3 Изучение области действия обьектов в модулях
Была изучена область действия обьектов в модулях. Исходя из примеров, приведенных ниже, можно сказать, что обьекты входящие в один модуль будут локализованы в этом модуле и доступны в нем. К переменным из другого модуля, даже импортированного в главный (выполняемый) модуль, прямого доступа не будет.
## 3.3.1 Изучение области действия обьектов в модулях (пример 1)
Внутрь модуля Mod2 в функцию alpha был добавлен вызов функции beta.
```py
def alpha():
print('****ALPHA****')
t=input('Значение t=')
n = beta(6)
print(n)
return t
```
Далее запущен модуль и вызвана функция alpha. Можно заметить, что инструкции успешно выполнились.
```py
from Mod2 import alpha
alpha()
****ALPHA****
Значение t=10
153552935.39544657
'10'
```
Далее в модуле в функции beta был добавлен вызов функции alpha.
```py
def beta(q):
import math
expi=q*math.pi
alpha()
return math.exp(expi)
```
Функция beta была успешно вызвана
```py
beta(1)
****ALPHA****
Значение t=10
23.140692632779267
```
## 3.3.2 Изучение области действия обьектов в модулях (пример 2)
В модуль Mod0 была добавлена функция печати переменных t и expi, которые есть в Mod2.
```py
#Модуль Mod0
import Mod1
print('perm1=',Mod1.perm1)
from Mod2 import alpha as al
tt=al()
print('tt=',tt)
from Mod2 import beta
qq=beta(float(tt))
print('qq=',qq)
print(t, expi)
```
Mod1:Введите значение = 10
Mod1:Значение perm1= 10
perm1= 10
****ALPHA****
Значение t=10
tt= 10
qq= 44031505860631.98
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
import Mod0
File "C:\Program Files (x86)\учёха 3 курс\pythonsky\Mod0.py", line 10, in <module>
print(t, expi)
NameError: name 't' is not defined. Did you mean: 'tt'?
## 3.3.3 Изучение области действия обьектов в модулях (пример 3)
В модуле Mod0 были добавлены инструкции, где переменная perm1 была увеличена в 3 раза и напечатана
```py
#Модуль Mod0
import Mod1
print('perm1=',Mod1.perm1)
from Mod2 import alpha as al
tt=al()
print('tt=',tt)
from Mod2 import beta
qq=beta(float(tt))
print('qq=',qq)
perm1 = Mod1.perm1*3
print("perm1*3= ", perm1)
```
При запуске модуля напечаталась переменная perm1 умноженная на 3. Так как эта переменная класса строка, то строка была повторена трижды и сформирована новая строка.
```py
import Mod0
Mod1:Введите значение = 10
Mod1:Значение perm1= 10
perm1= 10
****ALPHA****
Значение t=10
tt= 10
qq= 44031505860631.98
perm1*3= 101010
```
## 3.3.4 Изучение области действия обьектов в модулях (пример 4)
```py
import Mod0
Mod1:Введите значение = 10
Mod1:Значение perm1= 10
perm1= 10
****ALPHA****
Значение t=10
tt= 10
qq= 44031505860631.98
Mod0.Mod1.perm1 * 10
'10101010101010101010'
Mod0.tt * 2
'1010'
Mod0.qq * 2
88063011721263.95
```
Объекты perm1, tt, qq не определены в главном модуле, потому что они являются атрибутами других модулей. Для доступа к ним нужно использовать полные имена с указанием модуля.