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中的路径来搜索模块文件。

➡️

继续阅读