Python模块默认只加载一次,重复import直接返回sys.modules中缓存的模块对象;首次导入执行顶层代码并缓存,后续导入跳过执行;可用importlib.reload()强制重载,但不更新已有引用。
是的,Python 模块默认只会被加载(导入)一次。重复 import 同一个模块不会重新执行其代码,而是直接返回已缓存在 sys.modules 中的模块对象。
Python 在首次导入模块时,会执行模块文件中的顶层代码(如函数定义、变量赋值、print 语句等),然后将模块对象存入 sys.modules 字典,键为模块名。后续 import 都会先查这个字典——命中就直接返回,跳过加载和执行。
import sys; print('mymodule' in sys.modules)
del sys.modules['mymodule'],再 import 就会重新执行写多次 import math 或 from os import path 不会让代码重复运行,也不会增加开销。Python 解释器在编译阶段就能

import json,也只会在第一次调用时触发加载如果开发中修改了模块代码又不想重启解释器(比如在 Jupyter 或调试时),可以用 importlib.reload() 强制重载:
import mymod; import importlib; importlib.reload(mymod)from mymod import func 导入的 func 不会自动更新,需重新执行 from 导入或改用模块点号访问同一个包下的不同模块,只要名字不重复,各自独立缓存;但若 A.py 做了 import B,B.py 又做了 import A(循环导入),Python 会利用 sys.modules 的占位机制避免无限递归——不过此时模块可能处于“部分初始化”状态,容易引发 AttributeError。