python中import原理
💡
原文中文,约4100字,阅读约需10分钟。
📝
内容提要
在Python中,导入模块时,模块会加载到内存并存储在sys.modules字典中。模块名称可通过__name__属性查看,入口文件的__name__为__main__。导入包时,会执行__init__.py文件。模块属性变量可通过from语句引入,删除全局变量不会影响sys.modules中的缓存。若模块文件变动,可使用importlib.reload重新加载。搜索模块时,sys.path提供本地路径。
🎯
关键要点
-
在Python中,导入模块时,模块会加载到内存并存储在sys.modules字典中。
-
模块名称可通过__name__属性查看,入口文件的__name__为__main__。
-
导入包时,会执行__init__.py文件,并将其作为一个模块对象放在当前的全局变量中。
-
使用from语句可以引入模块属性变量,删除全局变量不会影响sys.modules中的缓存。
-
若模块文件变动,可使用importlib.reload重新加载模块。
-
搜索模块时,sys.path提供本地路径,用于查找模块文件。
❓
延伸问答
Python中如何查看模块的名称?
__name__属性可以用来查看模块的名称,入口文件的__name__为__main__。
导入包时会执行什么文件?
导入包时,会执行__init__.py文件,并将其作为一个模块对象放在当前的全局变量中。
如何重新加载已修改的模块?
可以使用importlib.reload来重新加载已修改的模块。
sys.modules是什么?
sys.modules是一个字典,用于存储已加载的模块,模块名称为key,模块对象为value。
如果删除全局变量,是否会影响sys.modules中的缓存?
删除全局变量不会影响sys.modules中的缓存,因为sys.modules保存了模块的引用。
如何查找模块文件?
当sys.modules中找不到模块时,会通过sys.path中的路径来搜索模块文件。
🏷️
标签
➡️