From 3e0263296387bece7964c880c3c6f5b5debe2f96 Mon Sep 17 00:00:00 2001 From: "FilippovDY (FilippovDY)" Date: Mon, 24 Nov 2025 10:41:22 +0300 Subject: [PATCH] Tema8/report.md --- TEMA8/report.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/TEMA8/report.md b/TEMA8/report.md index 8aafda1..f081115 100644 --- a/TEMA8/report.md +++ b/TEMA8/report.md @@ -24,7 +24,7 @@ perm1=input('Mod1:Введите значение = ') print('Mod1:Значение perm1=',perm1) ``` -Пока введённый или изменённый текст в окне редактора с текстом модуля не сохранён в файле, в заголовке перед именем файла будет стоять символ "\*". +Пока введённый или изменённый текст в окне редактора с текстом модуля не сохранён в файле, в заголовке перед именем файла будет стоять символ "*". ```py >>> import Mod1 # Запуск модуля @@ -38,7 +38,7 @@ Mod1:Значение perm1= 5 '5' ``` -При импорте модуля управление переда1тся от модуля ``__main__`` к модулю Mod1, который ищется в рабочем каталоге. Если бы данного модуля там не было, то при импорте пришлось бы ещё указать каталог, где он находится. +При импорте модуля управление передаётся от модуля ```__main__``` к модулю Mod1, который ищется в рабочем каталоге. Если бы данного модуля там не было, то при импорте пришлось бы ещё указать каталог, где он находится. При повторном импорте модуля, запуска программы не происходит. Чтобы это исправить, применим функцию reload из модуля importlib: ```py @@ -77,9 +77,10 @@ Mod1:Значение perm1= 5 ## 2.3 Запуск модуля на выполнение с помощью функции exec() Здесь модуль не требуется импортировать. Функция exec действует так, как будто на месте обращения к ней в программу вставлен код из объекта-аргумента функции. Но объект-модуль при этом не создается. Созданные при выполнении модуля объекты становятся объектами главной программы! ```py ->>> exec(open('Mod1.py').read()) # Здесь наблюдается проблема с кодировкой символов, файл был сохранён в одной кодировке, а Python хочет его прочитать в другой. Поэтому укажем явно кодировку +>>> exec(open('Mod1.py').read()) Mod1:Введите значение = 5 Mod1:Значение perm1= 5 +# Здесь наблюдается проблема с кодировкой символов, файл был сохранён в одной кодировке, а Python хочет его прочитать в другой. Поэтому укажем явно кодировку >>> exec(open('Mod1.py', encoding='utf-8').read()) Mod1:Введите значение = 5 Mod1:Значение perm1= 5 @@ -110,7 +111,7 @@ Mod1:Значение perm1= 5 >>> from Mod1 import perm1 ``` -Объект Mod1 появился в памяти, программа на выполнение вызвалась, аналогично использованию import. При последующем повторении команды ничего не происходит. +Объект Mod1 появился в памяти, программа на выполнение вызвалась, аналогично использованию import. При последующем повторении команды ничего не происходит. Python хранит загруженные модули в sys.modules, при первом импорте выполняется весь код модуля, при повторном импорте Python просто берёт модуль из кэша. Пример2: @@ -135,7 +136,6 @@ def beta(q): >>> g 535.4916555247646 >>> print(sorted(sys.modules.keys())) ->>> 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', '_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): @@ -238,13 +238,13 @@ def nechus(xtt,gran): Модуль 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]) +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=[] @@ -282,7 +282,7 @@ Mod1: perm1 Mod2: функции alpha, beta; переменные t, expi Mod0: переменные tt,qq -Исходя из примеров, приведенных ниже, можно сказать, что обьекты входящие в один модуль будут локализованы в этом модуле и доступны в нем. К переменным из другого модуля, даже импортированного в главный (выполняемый) модуль, прямого доступа не будет. +Исходя из примеров, приведенных ниже, можно сказать, что объекты входящие в один модуль будут локализованы в этом модуле и доступны в нем. К переменным из другого модуля, даже импортированного в главный (выполняемый) модуль, прямого доступа не будет.  ## 3.3.1 Добавление в функцию alpha обращение к функции beta и, наоборот, из beta – к alpha.