Python模块系统解析是同步还是异步?基于书籍的假设是否正确
Python模块系统是否为同步式?
你的假设是正确的,Python的模块系统确实是同步式的,具体依据如下:
- 从《Learning Python》的描述可知,
import/from语句会在运行时同步执行并加载目标文件:当代码执行到导入语句时,Python会同步完成模块文件的查找、加载与解析流程,完成模块对象的创建和变量绑定后,才会继续执行后续代码。 - 对比JavaScript的模块系统,Python原生模块加载逻辑和CommonJS(同步)一致,不存在ES模块那样的异步加载机制——Python原生没有类似ES模块
import()的动态异步导入设计,即便通过第三方库能实现近似效果,也不属于原生模块系统的范畴。
为达成上述目标,import(以及后续会介绍的from)语句会按需执行并加载其他文件。更正式地说,在Python中,cross-file module linking要到运行时执行此类import语句时才会解析;其最终效果是将模块名——如b这类简单变量——赋值给已加载的模块对象。实际上,import语句中使用的模块名有两个作用:一是标识待加载的外部文件,二是成为指向已加载模块的变量。
内容的提问来源于stack exchange,提问作者Max Koretskyi
相关产品推荐
相关产品推荐

