Изменил(а) на 'TEMA8/report8.md'

main
EfimovaLA 5 дней назад
Родитель f81db7efed
Сommit b37afb06c2

@ -1,362 +1,362 @@
# Отчет по теме 8 # Отчет по теме 8
Ефимова Людмила, А-03-23 Ефимова Людмила, А-03-23
# Модули и структурирование программы # Модули и структурирование программы
## 1. Установка рабочего каталога ## 1. Установка рабочего каталога
```py ```py
import importlib import importlib
import os,sys import os,sys
os.getcwd() #Контролируем корректность установки текущего каталога os.getcwd() #Контролируем корректность установки текущего каталога
'H:\\study\\ПОАС' 'H:\\study\\ПОАС'
``` ```
## 2. Создание и использование модулей в среде Python ## 2. Создание и использование модулей в среде Python
Модулем в среде Python называется любая часть программного кода на этом языке, записанная в Модулем в среде Python называется любая часть программного кода на этом языке, записанная в
отдельном файле отдельном файле
### 2.1. Запуск модуля на выполнение путем его импорта ### 2.1. Запуск модуля на выполнение путем его импорта
Создала файл Mod1.py с содержимым: Создала файл Mod1.py с содержимым:
```py ```py
perm1=input('Mod1:Введите значение = ') perm1=input('Mod1:Введите значение = ')
print('Mod1:Значение perm1=',perm1) print('Mod1:Значение perm1=',perm1)
``` ```
Запустила модуль Mod1.py Запустила модуль Mod1.py
```py ```py
import Mod1 import Mod1
Mod1:Введите значение = 3 Mod1:Введите значение = 3
Mod1:Значение perm1= 3 Mod1:Значение perm1= 3
type(Mod1) type(Mod1)
<class 'module'> <class 'module'>
dir(Mod1) dir(Mod1)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'perm1'] ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'perm1']
Mod1.perm1 # Обращение к переменной perm из модуля Mod1 Mod1.perm1 # Обращение к переменной perm из модуля Mod1
'3' '3'
``` ```
При повторном вызове через import ничего не происходит При повторном вызове через import ничего не происходит
```py ```py
import Mod1 import Mod1
importlib.reload(Mod1) # для повторного вызова модуля используем reload importlib.reload(Mod1) # для повторного вызова модуля используем reload
Mod1:Введите значение = 5 Mod1:Введите значение = 5
Mod1:Значение perm1= 5 Mod1:Значение perm1= 5
<module 'Mod1' from 'H:\\study\\ПОАС\\Mod1.py'> <module 'Mod1' from 'H:\\study\\ПОАС\\Mod1.py'>
Mod1.perm1 Mod1.perm1
'5' '5'
``` ```
### 2.2. Вывод импортированных модулей ### 2.2. Вывод импортированных модулей
Импортированные модули заносятся в словарь - значение атрибута sys.modules, поэтому их можно увидеть с помощью инструкции keys(). Импортированные модули заносятся в словарь - значение атрибута sys.modules, поэтому их можно увидеть с помощью инструкции keys().
```py ```py
print(sorted(sys.modules.keys())) 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'] ['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']
``` ```
Для повторного импорта удалим его из словаря. Для повторного импорта удалим его из словаря.
```py ```py
print(sorted(sys.modules.keys())) print(sorted(sys.modules.keys()))
['__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib',...] ['__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib',...]
import Mod1 # еще раз импортировали модуль import Mod1 # еще раз импортировали модуль
Mod1:Введите значение = 4 Mod1:Введите значение = 4
Mod1:Значение perm1= 4 Mod1:Значение perm1= 4
sys.modules.pop('Mod1') # еще раз удалили модуль sys.modules.pop('Mod1') # еще раз удалили модуль
<module 'Mod1' from 'H:\\study\\ПОАС\\Mod1.py'> <module 'Mod1' from 'H:\\study\\ПОАС\\Mod1.py'>
``` ```
### 2.3. Запуск модуля на выполнение с помощью функции exec() ### 2.3. Запуск модуля на выполнение с помощью функции exec()
Для запуска через exec() не трубуется импортировать модуль, но модуль при этом не создается, все созданные при выполнении модуля объекты становятся объектами главной программы Для запуска через exec() не трубуется импортировать модуль, но модуль при этом не создается, все созданные при выполнении модуля объекты становятся объектами главной программы
```py ```py
exec(open('Mod1.py').read()) exec(open('Mod1.py').read())
Mod1:Введите значение = 11111 Mod1:Введите значение = 11111
Mod1:Значение perm1= 11111 Mod1:Значение perm1= 11111
exec(open("Mod1.py", encoding = "utf-8").read()) # изменили кодировку exec(open("Mod1.py", encoding = "utf-8").read()) # изменили кодировку
Mod1:Введите значение = 11111111 Mod1:Введите значение = 11111111
Mod1:Значение perm1= 11111111 Mod1:Значение perm1= 11111111
perm1 perm1
'11111111' '11111111'
exec(open("Mod1.py", encoding = "utf-8").read()) exec(open("Mod1.py", encoding = "utf-8").read())
Mod1:Введите значение = 777 Mod1:Введите значение = 777
Mod1:Значение perm1= 777 Mod1:Значение perm1= 777
perm1 perm1
'777' '777'
``` ```
### 2.4. Использование инструкции from … import … ### 2.4. Использование инструкции from … import …
В одном модуле может содержаться несколько программных единиц (функций, объектов). В одном модуле может содержаться несколько программных единиц (функций, объектов).
Можно осуществить частичный импорт объектов Можно осуществить частичный импорт объектов
```py ```py
'777' '777'
from Mod1 import perm1 from Mod1 import perm1
Mod1:Введите значение = 1111 Mod1:Введите значение = 1111
Mod1:Значение perm1= 1111 Mod1:Значение perm1= 1111
dir() dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'importlib', 'os', 'perm1', 'sys'] ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'importlib', 'os', 'perm1', 'sys']
"Mod1" in dir() # Модуль Mod1 не появился в памяти "Mod1" in dir() # Модуль Mod1 не появился в памяти
False False
perm1 # переменная модуля стала переменной программы perm1 # переменная модуля стала переменной программы
'1111' '1111'
``` ```
Создала второй модуль Mod2: Создала второй модуль Mod2:
```py ```py
def alpha(): def alpha():
print('****ALPHA****') print('****ALPHA****')
t=input('Значение t=') t=input('Значение t=')
return t return t
def beta(q): def beta(q):
import math import math
expi=q*math.pi expi=q*math.pi
return math.exp(expi) return math.exp(expi)
``` ```
Импортировали только функцию beta Импортировали только функцию beta
```py ```py
from Mod2 import beta from Mod2 import beta
g=beta(2) g=beta(2)
g g
535.4916555247646 535.4916555247646
"Mod2" in dir() "Mod2" in dir()
False False
alpha() # Функция alpha не была импортировна, поэтому к ней нельзя обращаться alpha() # Функция alpha не была импортировна, поэтому к ней нельзя обращаться
Traceback (most recent call last): Traceback (most recent call last):
File "<pyshell#205>", line 1, in <module> File "<pyshell#205>", line 1, in <module>
alpha() # Функция alpha не была импортировна, поэтому к ней нельзя обращаться alpha() # Функция alpha не была импортировна, поэтому к ней нельзя обращаться
NameError: name 'alpha' is not defined NameError: name 'alpha' is not defined
``` ```
Импортируем alpha из Mod2 Импортируем alpha из Mod2
```py ```py
from Mod2 import alpha as al # присвоили имя al from Mod2 import alpha as al # присвоили имя al
al() al()
****ALPHA**** ****ALPHA****
Значение t=5 Значение t=5
'5' '5'
from Mod2 import alpha as al, beta as bt # можем импортировать обе функции from Mod2 import alpha as al, beta as bt # можем импортировать обе функции
dir() dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'al', 'bt', 'g', 'importlib', 'os', 'perm1', 'sys'] ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'al', 'bt', 'g', 'importlib', 'os', 'perm1', 'sys']
del al,beta # удалили импортированные объекты del al,beta # удалили импортированные объекты
from Mod2 import * # импорт всего содержимого from Mod2 import * # импорт всего содержимого
tt=alpha() #На запрос введите значение 0.12 tt=alpha() #На запрос введите значение 0.12
****ALPHA**** ****ALPHA****
Значение t=0.12 Значение t=0.12
uu=beta(float(tt))uu uu=beta(float(tt))uu
1.4578913609506803 1.4578913609506803
``` ```
## 3.Создание многомодульных программ ## 3.Создание многомодульных программ
### 3.1. Пример простой многомодульной программы ### 3.1. Пример простой многомодульной программы
Создали Mod0: Создали Mod0:
```py ```py
#Модуль Mod0 #Модуль Mod0
import Mod1 import Mod1
print('perm1=',Mod1.perm1) print('perm1=',Mod1.perm1)
from Mod2 import alpha as al from Mod2 import alpha as al
tt=al() tt=al()
print('tt=',tt) print('tt=',tt)
from Mod2 import beta from Mod2 import beta
qq=beta(float(tt)) qq=beta(float(tt))
print('qq=',qq) print('qq=',qq)
``` ```
Программа состоит из нескольких модудей Программа состоит из нескольких модулей
```py ```py
sys.modules.pop("Mod1") # удалили лишние модули sys.modules.pop("Mod1") # удалили лишние модули
<module 'Mod1' from 'H:\\study\\ПОАС\\Mod1.py'> <module 'Mod1' from 'H:\\study\\ПОАС\\Mod1.py'>
sys.modules.pop("Mod2") sys.modules.pop("Mod2")
<module 'Mod2' from 'H:\\study\\ПОАС\\Mod2.py'> <module 'Mod2' from 'H:\\study\\ПОАС\\Mod2.py'>
import Mod0 import Mod0
Mod1:Введите значение = 111 Mod1:Введите значение = 111
Mod1:Значение perm1= 111 Mod1:Значение perm1= 111
perm1= 111 perm1= 111
****ALPHA**** ****ALPHA****
Значение t=77 Значение t=77
tt= 77 tt= 77
qq= 1.1401952983082614e+105 qq= 1.1401952983082614e+105
Mod0.tt; Mod0.qq; Mod0.Mod1.perm1 Mod0.tt; Mod0.qq; Mod0.Mod1.perm1
'77' '77'
1.1401952983082614e+105 1.1401952983082614e+105
'111' '111'
``` ```
### 3.2. Создание многомодульной программы на примере функций из Темы 7 ### 3.2. Создание многомодульной программы на примере функций из Темы 7
Создала модуль MM1.py в который записала модель системы из темы 7 Создала модуль MM1.py в который записала модель системы из темы 7
```py ```py
def realdvig(xtt, kk1, TT, yti1, ytin1): def realdvig(xtt, kk1, TT, yti1, ytin1):
# Модель реального двигателя # Модель реального двигателя
yp = kk1 \* xtt # Усилитель yp = kk1 \* xtt # Усилитель
yti1 = yp + yti1 # Усилитель yti1 = yp + yti1 # Усилитель
ytin1 = (yti1 + TT \* ytin1) / (TT + 1) ytin1 = (yti1 + TT \* ytin1) / (TT + 1)
return \[yti1, ytin1] return \[yti1, ytin1]
def tahogen(xtt, kk2, yti2): def tahogen(xtt, kk2, yti2):
# Модель тахогенератора # Модель тахогенератора
yp = kk2 * xtt # Усилитель yp = kk2 * xtt # Усилитель
yti2 = yp + yti2 # Интегратор yti2 = yp + yti2 # Интегратор
return yti2 return yti2
def nechus(xtt, gran): def nechus(xtt, gran):
# Зона нечувствительности # Зона нечувствительности
if xtt < gran and xtt > (-gran): if xtt < gran and xtt > (-gran):
return 0 return 0
elif xtt >= gran: elif xtt >= gran:
return xtt - gran return xtt - gran
elif xtt <= (-gran): elif xtt <= (-gran):
return xtt + gran return xtt + gran
``` ```
Ввод параметров сохранила в модуль MM2.py Ввод параметров сохранила в модуль MM2.py
```py ```py
znach = input("k1, T, k2, Xm, A, F, N = ").split(",") znach = input("k1, T, k2, Xm, A, F, N = ").split(",")
k1 = float(znach[0]) k1 = float(znach[0])
T = float(znach[1]) T = float(znach[1])
k2 = float(znach[2]) k2 = float(znach[2])
Xm = float(znach[3]) Xm = float(znach[3])
A = float(znach[4]) A = float(znach[4])
F = float(znach[5]) F = float(znach[5])
N = int(znach[6]) N = int(znach[6])
import math import math
vhod = [] vhod = []
for i in range(N): for i in range(N):
vhod.append(A * math.sin((2 * i * math.pi) / F)) vhod.append(A * math.sin((2 * i * math.pi) / F))
import MM1 as mod import MM1 as mod
yi1 = 0; yin1 = 0; yi2 = 0 yi1 = 0; yin1 = 0; yi2 = 0
vyhod = [] vyhod = []
for xt in vhod: for xt in vhod:
xt1 = xt - yi2 xt1 = xt - yi2
[yi1, yin1] = mod.realdvig(xt1, k1, T, yi1, yin1) [yi1, yin1] = mod.realdvig(xt1, k1, T, yi1, yin1)
yi2 = mod.tahogen(yin1, k2, yi2) yi2 = mod.tahogen(yin1, k2, yi2)
yt = mod.nechus(yin1, Xm) yt = mod.nechus(yin1, Xm)
vyhod.append(yt) vyhod.append(yt)
``` ```
Программа запускающая остальные модули MM0.py Программа запускающая остальные модули MM0.py
```py ```py
import MM2 import MM2
print("y =", MM2.vyhod) print("y =", MM2.vyhod)
``` ```
Запуск многомодульной программы Запуск многомодульной программы
```py ```py
import MM0 import MM0
k1, T, k2, Xm, A, F, N = 8, 5, 3, 5, 3, 50, 20 k1, T, k2, Xm, A, F, N = 8, 5, 3, 5, 3, 50, 20
y = [0, 0, 0, 0, 0, 0, -0.5901518991576866, 3.452634704774537, 0.3642909010247486, -28.2151620053697, 26.675026712827304, 51.21473287127543, -172.66693667770392, 78.76799406127618, 417.8318242176528, -859.8658159198188, -43.91966881153879, 2710.4996464065, -3753.6472426408995, -2892.354195893288] y = [0, 0, 0, 0, 0, 0, -0.5901518991576866, 3.452634704774537, 0.3642909010247486, -28.2151620053697, 26.675026712827304, 51.21473287127543, -172.66693667770392, 78.76799406127618, 417.8318242176528, -859.8658159198188, -43.91966881153879, 2710.4996464065, -3753.6472426408995, -2892.354195893288]
``` ```
### 3.3. Области действия объектов в модулях ### 3.3. Области действия объектов в модулях
Обратимся из одной функции к другой в модуле Mod2.py Обратимся из одной функции к другой в модуле Mod2.py
Вставим в функцию alpha обращение к функции beta и, наоборот, из beta – к alpha. Вставим в функцию alpha обращение к функции beta и, наоборот, из beta – к alpha.
```py ```py
def alpha(): def alpha():
print("****ALPHA****") print("****ALPHA****")
print("Вызов функции beta из функции alpha:", beta(0)) print("Вызов функции beta из функции alpha:", beta(0))
t = input("Значение t = ") t = input("Значение t = ")
return t return t
``` ```
Запуск модуля Запуск модуля
```py ```py
import Mod2 import Mod2
Mod2.alpha() Mod2.alpha()
****ALPHA**** ****ALPHA****
Вызов функции beta из функции alpha: 1.0 Вызов функции beta из функции alpha: 1.0
Значение t = 202020 Значение t = 202020
'202020' '202020'
``` ```
Для функции beta в модуле Mod2.py Для функции beta в модуле Mod2.py
```py ```py
def beta(q): def beta(q):
print("****BETA****") print("****BETA****")
print("Вызов функции alpha из функции beta:", alpha()) print("Вызов функции alpha из функции beta:", alpha())
import math import math
expi = q * math.pi expi = q * math.pi
return math.exp(expi) return math.exp(expi)
``` ```
Запустим модуль Запустим модуль
```py ```py
import Mod2 import Mod2
Mod2.beta(4) Mod2.beta(4)
****BETA**** ****BETA****
****ALPHA**** ****ALPHA****
Значение t = 5 Значение t = 5
Вызов функции alpha из функции beta: 5 Вызов функции alpha из функции beta: 5
286751.31313665316 286751.31313665316
``` ```
Отобразим на экране в модуле Mod0 значения объектов t и expi Отобразим на экране в модуле Mod0 значения объектов t и expi
Модуль Mod1 Модуль Mod1
```py ```py
import Mod1 import Mod1
print("perm1 =", Mod1.perm1) print("perm1 =", Mod1.perm1)
from Mod2 import alpha as al from Mod2 import alpha as al
tt = al() tt = al()
print("tt =", tt) print("tt =", tt)
from Mod2 import beta from Mod2 import beta
qq = beta(float(tt)) qq = beta(float(tt))
print("qq =", qq) print("qq =", qq)
print("t =", t) print("t =", t)
print("expi =", expi) print("expi =", expi)
``` ```
```py ```py
import Mod0 import Mod0
Mod1: Введите значение = 1 Mod1: Введите значение = 1
Mod1: Значение perm1 = 1 Mod1: Значение perm1 = 1
perm1 = 1 perm1 = 1
****ALPHA**** ****ALPHA****
Значение t = 2 Значение t = 2
tt = 2 tt = 2
****BETA**** ****BETA****
qq = 535.4916555247646 qq = 535.4916555247646
Traceback (most recent call last): Traceback (most recent call last):
File "<pyshell#252>", line 1, in <module> File "<pyshell#252>", line 1, in <module>
import Mod0 import Mod0
File "H:\\study\\ПОАС\\Mod0.py" File "H:\\study\\ПОАС\\Mod0.py"
print("t =", t, " expi =", expi) print("t =", t, " expi =", expi)
NameError: name 't' is not defined. Did you mean: 'tt'? NameError: name 't' is not defined. Did you mean: 'tt'?
``` ```
При обращении к переменной t, будет ошибка, так как переменная определена в другом модуле и к ней нельзя обратиться напрямую При обращении к переменной t, будет ошибка, так как переменная определена в другом модуле и к ней нельзя обратиться напрямую
аналогично с переменной expi аналогично с переменной expi
Попробуем в модуле Mod0 увеличить в 3 раза значение объекта perm1 и отобразить его после Попробуем в модуле Mod0 увеличить в 3 раза значение объекта perm1 и отобразить его после
этого на экране. этого на экране.
```py ```py
import Mod1 import Mod1
print("perm1 =", Mod1.perm1) print("perm1 =", Mod1.perm1)
from Mod2 import alpha as al from Mod2 import alpha as al
tt = al() tt = al()
print("tt =", tt) print("tt =", tt)
from Mod2 import beta from Mod2 import beta
qq = beta(float(tt)) qq = beta(float(tt))
print("qq =", qq) print("qq =", qq)
Mod1.perm1 *= 3 Mod1.perm1 *= 3
print("perm1 * 3 =", Mod1.perm1) print("perm1 * 3 =", Mod1.perm1)
``` ```
Запустим Запустим
```py ```py
import Mod0 import Mod0
Mod1: Введите значение = 1 Mod1: Введите значение = 1
Mod1: Значение perm1 = 1 Mod1: Значение perm1 = 1
perm1 = 1 perm1 = 1
****ALPHA**** ****ALPHA****
Значение t = 2 Значение t = 2
tt = 2 tt = 2
****BETA**** ****BETA****
qq = 535.4916555247646 qq = 535.4916555247646
perm1 * 3 = 111 perm1 * 3 = 111
``` ```
Попробуем в командной строке (в главном модуле) увеличить в 2 раза значения объектов Попробуем в командной строке (в главном модуле) увеличить в 2 раза значения объектов
perm1, tt, qq. perm1, tt, qq.
```py ```py
perm1 *= 2 perm1 *= 2
Traceback (most recent call last): Traceback (most recent call last):
File "<pyshell#254>", line 1, in <module> File "<pyshell#254>", line 1, in <module>
perm1 *= 2 perm1 *= 2
NameError: name 'perm1' is not defined NameError: name 'perm1' is not defined
tt *= 2 tt *= 2
Traceback (most recent call last): Traceback (most recent call last):
File "<pyshell#255>", line 1, in <module> File "<pyshell#255>", line 1, in <module>
tt *= 2 tt *= 2
``` ```
аналогично аналогично
Эти переменные локальные для модулей и обращение к ним из командной строке выводит ошибку. Эти переменные локальные для модулей и обращение к ним из командной строке выводит ошибку.
## 4. Завершила работу со средой ## 4. Завершила работу со средой

Загрузка…
Отмена
Сохранить