TGViewer
Python: задачки и вопросы Python: задачки и вопросы @quiz_python · 6.92K subscribers
Post #3758 1.3K
Модули загружаются и запускаются при выполнении первого оператора import или from и только первого. Так было задумано — поскольку импортирование является затратной операцией, по умолчанию Python делает его только один раз на файл и однократно на процесс. Более поздние операции импортирования просто извлекают объект уже загруженного модуля.

В качестве одного последствия, из-за того, что код верхнего уровня в файле модуля обычно выполняется только один раз, вы можете применять его для инициализации переменных. Взгляните на содержимое файла simple.ру:


print('hello')
spam = 1


В приведенном примере операторы print и = выполняются, когда модуль импортируется в первый раз, и переменная spam инициализируется во время импортирования:


# main.py
import simple # Первая операция импортирования: загружает и выполняет код файла
simple.spam = 2


Вторая и последующие операции импортирования не выполняют код модуля повторно; они всего лишь извлекают уже созданный объект модуля из внутренней таблицы модулей Python. Таким образом, переменная spam не будет инициализироваться заново:



import simple
print(simple.spam) # 2


Если вы действительно хотите, чтобы код модуля выполнился повторно при последующей операции импортирования, это делается с помощью функции reload.
More from @quiz_python
  1. Sep 29, 2026Развёрнутое пояснение: 1. Создаётся функция load_rate, которая при вызове печатает строку…
  2. Sep 29, 2026Post #4902
  3. Sep 26, 2026Развёрнутое пояснение: 1. При создании класса __slots__ разрешает экземплярам хранить атри…
  4. Sep 26, 2026Post #4900
  5. Sep 26, 2026Развёрнутое пояснение: 1. deque создаёт очередь из a и b с максимальной длиной 3. 2. appen…
  6. Sep 26, 2026Post #4898
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →