From a83d73e78b9dea2fbb87e205d11b01924c183378 Mon Sep 17 00:00:00 2001 From: KuzmenkoEA Date: Sat, 13 Dec 2025 13:07:21 +0000 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82=D1=8C=20'T?= =?UTF-8?q?EMA8/report.md.txt'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA8/report.md.txt | 398 -------------------------------------------- 1 file changed, 398 deletions(-) delete mode 100644 TEMA8/report.md.txt diff --git a/TEMA8/report.md.txt b/TEMA8/report.md.txt deleted file mode 100644 index f168b85..0000000 --- a/TEMA8/report.md.txt +++ /dev/null @@ -1,398 +0,0 @@ -# Отчёт по Теме 8 - -Кузьменко Елена, А-02-23 - -## 1. Запустили интерактивную оболочку IDLE. - -```py -import os, sys, importlib -os.chdir(r"C:\Users\vaffl\Desktop\Учеба\ПОАС\TEMA8") -os.getcwd() -'C:\\Users\\vaffl\\Desktop\\Учеба\\ПОАС\\TEMA8' -``` - -## 2. Создание и использование модулей в среде Python. - - Модуль в Python — это отдельный файл с расширением .py, содержащий код на языке Python, который может быть повторно использован в других программах через import. - -### 2.1. Запуск модуля через import - -Mod1.py -```py -perm1 = input('Mod1:Введите значение = ') -print('Mod1:Значение perm1=', perm1) - -``` - -main.py -```py ->>> import sys, os ->>> import Mod1 -Mod1:Введите значение = 10 -Mod1:Значение perm1= 10 ->>> type(Mod1) - ->>> dir(Mod1) -['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'perm1'] -``` - -Повторное обращение к Mod1 в main: -```py ->>> import Mod1 # требуется перезагрузить ->>> importlib.reload(Mod1) -Mod1:Введите значение = 6 -Mod1:Значение perm1= 6 - ->>> Mod1.perm1 -'6' -``` - -### 2.2. Импортируемые модули в словаре. - -Импортированные модули заносятся в словарь – значение атрибута sys.modules. - -```py ->>> print(sorted(sys.modules.keys())) -['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', . . ., 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib'] - -``` - print(sorted(sys.modules.keys())) выводит отсортированный по алфавиту список всех модулей, загруженных в память Python на данный момент. - -Удаление Mod1 из словаря: - -```py ->>> sys.modules.pop('Mod1') - ->>> print(sorted(sys.modules.keys())) -['__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', …, 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', '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(). - - Функция exec действует так, как будто на месте обращения к ней в программу вставлен код из объекта-аргумента функции. Объект-модуль при этом не создается. Созданные при выполнении модуля объекты становятся объектами главной программы. - -```py ->>> exec(open('Mod1.py').read()) # читает как бинарный файл -Mod1:Введите значение = 3 -Mod1:Значение perm1= 3 ->>> exec(open('Mod1.py', encoding='utf-8').read()) -Mod1:Введите значение = 3 -Mod1:Значение perm1= 3 ->>> print(sorted(sys.modules.keys())) # Объект-модуль не появится -['__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', ...,'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib'] ->>> perm1 -'3' -``` - -### 2.4. Инструкция from … import … - - Можно осуществлять импорт модуля не целиком, а только часть содержащихся в нем объектов. - -#### Пример 1 - -```py ->>> from Mod1 import perm1 -Mod1:Введите значение = 1 -Mod1:Значение perm1= 1 ->>> "perm1" in dir() -True ->>> "Mod1" in dir() -False ->>> perm1 # Теперь переменная главной программы -'1' -``` - -#### Пример 2 - -Содержимое нового модуля Mod2: - -```py -def alpha(): - print('****ALPHA****') - t=input('Значение t=') - return t - -def beta(q): - import math - expi=q*math.pi - return math.exp(expi) -``` -main.py -```py ->>> from Mod2 import beta # импортирует beta из модуля ->>> g = beta(2); g -535.4916555247646 -``` - -Случай обращения к переменной без её импорта: -```py ->>> alpha() -Traceback (most recent call last): - File "", line 1, in - alpha() -NameError: name 'alpha' is not defined -``` - -Импорт функции из модуля с псевдонимом: -```py ->>> from Mod2 import alpha as al ->>> al() -****ALPHA**** -Значение t=54 -'54' -``` - -```py ->>> del al,beta ->>> dir() -['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'g', 'importlib', 'os', 'perm1', 'sys'] ->>> from Mod2 import * # импорт всего содержимого ->>> tt=alpha() -****ALPHA**** -Значение t=0.12 ->>> uu = beta(float(tt)) ->>> uu -1.4578913609506803 -``` - -## 3. Многомодульные программы. - -### 3.1. Пример простой многомодульной программы. - -Содержимое модуля Mod0: -```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) -``` - -main.py -```py ->>> import Mod0 -Mod1:Введите значение = 10 -Mod1:Значение perm1= 10 -perm1= 10 -****ALPHA**** -Значение t=0.1 -tt= 0.1 -qq= 1.369107770624847 ->>> Mod0.tt; Mod0.qq; Mod0.Mod1.perm1 -'0.1' -1.369107770624847 -'10' -``` - -### 3.2. Многомодульная программа(Тема7) - -MM1.py -```py -def realdvig(xtt,kk1,TT,yti1,ytin1): - #Модель реального двигателя - yp=kk1*xtt #усилитель - yti1=yp+yti1 #Интегратор - ytin1=(yti1+TT*ytin1)/(TT+1) - return [yti1,ytin1] - -def tahogen(xtt,kk2,yti2): - #Модель тахогенератора - yp=kk2*xtt #усилитель - yti2=yp+yti2 #интегратор - return yti2 - -def nechus(xtt,gran): - #зона нечувствит - if xtt(-gran): - ytt=0 - elif xtt>=gran: - ytt=xtt-gran - elif xtt<=(-gran): - ytt=xtt+gran - return ytt -``` - -MM2.py -```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) - vyhod.append(yt) -``` - -MM0.py -```py -import MM2 -print("y =", MM2.vyhod) -``` - -main.py -```py ->>> import MM0 -k1,T,k2,Xm,A,F,N=5,4,3,10,13,40,20 -y = [0, 0, 0, 0, 0, 2.477949838924891, 0, -20.53441412153191, 17.715970981372855, 60.985241346827166, -100.52605254589719, -130.44369177973613, 361.76845433684196, 191.5984158258393, -1110.3384817523201, 0, 3063.4072561608186, -1492.2961077606046, -7685.482903314702, 7891.808692887814] -``` - - -### 3.3. Области действия объектов в модулях. - -#### Пример 1 - - Попробуйте вставить в функции alpha обращение к функции beta и, наоборот, из beta – к alpha. - -Mod2.py -```py -def alpha(): - print('****ALPHA****') - t=input('Значение t=') - print('Результат beta(2) из alpha:', beta(2)) - return t - -def beta(q): - import math - print('Результат alpha() из beta:', alpha()) - expi=q*math.pi - return math.exp(expi) -``` - Одновременно нельзя функциям обращаться друг к другу, так как возникает рекурсия(обращение функции к самой себе) - происходит зацикливание вывода(пока не прервать) - -В отдельных случаях: -main.py -```py ->>> Mod2.alpha() -****ALPHA**** -Значение t=10 -Результат beta(2) из alpha: 535.4916555247646 -'10' -``` - -```py ->>> Mod2.beta(3) -****ALPHA**** -Значение t=10 -Результат alpha() из beta: 10 -12391.647807916694 -``` - -#### Пример 2 - - Попробуйте отобразить на экране в модуле Mod0 значения объектов t и expi. - -Mod2.py -```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 =',t) -print('expi =',expi) -``` - -main.py -```py ->>> import Mod0 -Mod1:Введите значение = 2 -Mod1:Значение perm1= 2 -perm1= 2 -****ALPHA**** -Значение t=1 -tt= 1 -qq = 23.140692632779267 -Traceback (most recent call last): - File "", line 1, in - import Mod0 - File "C:\Users\vaffl\Desktop\Учеба\ПОАС\TEMA8\Mod0.py", line 10, in - print('t =',t) -NameError: name 't' is not defined. Did you mean: 'tt' -``` - Переменные t и expi -локальные, они не существуют в Mod0(только во время выполнения функций alpha() и beta()) - -#### Пример 3 - - Попробуйте в модуле Mod0 увеличить в 3 раза значение объекта perm1 и отобразить его после этого на экране. - -Mod0.py -```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) -Mod1.perm1 *= 3 # с указанием модуля -print("perm1 = ", Mod1.perm1) -``` - -main.py -```py ->>> import Mod0 -perm1= 2 -****ALPHA**** -Значение t=10 -tt= 10 -qq = 44031505860631.98 -perm1 = 222 -``` - -#### Пример 4 - - Попробуйте в командной строке (в главном модуле) увеличить в 2 раза значения объектов perm1, tt, qq. - -```py ->>> import Mod0 -perm1= 222 -****ALPHA**** -Значение t=1 -tt= 1 -qq = 23.140692632779267 -perm1 = 222222222 ->>> perm1*2 -Traceback (most recent call last): - File "", line 1, in - perm1 -NameError: name 'perm1' is not defined ->>> tt*2 -Traceback (most recent call last): - File "", line 1, in - tt -NameError: name 'tt' is not defined ->>> qq*2 -Traceback (most recent call last): - File "", line 1, in - qq*2 -NameError: name 'qq' is not defined -``` - perm1,tt,qq - локальные объекты, к ним можно обращаться только в модулях, где они были заданы изначально. - -## 4. Завершение сеанса работы с IDLE. \ No newline at end of file