Python导入是否将所有代码复制到文件中

时间:2019-04-23 21:25:02

标签: python python-3.x import module sys.path

当我们在Python脚本中导入模块时,这会将所有必需的代码复制到脚本中,还是只是让脚本知道在哪里找到它?

如果我们在代码中不使用模块,会发生什么情况,是否会像C / C ++中那样以某种方式对其进行优化?

1 个答案:

答案 0 :(得分:1)

所有这些都不是。

导入有两件事。首先,如果之前尚未加载请求的模块,则导入加载模块。这主要归结为创建新的全局作用域并在该作用域中执行模块的代码以初始化模块。新的全局作用域用作模块的属性,以及用于模块中任何代码的全局变量查找。

第二,导入将绑定请求的任何名称。 import whateverwhatever名称绑定到whatever模块对象。 import whatever.thing还将whatever名称绑定到whatever模块对象。 from whatever import somefuncsomefunc模块对象上查找whatever属性,并将somefunc名称绑定到查找到的任何属性。

未使用的导入无法进行优化,因为模块加载和名称绑定都会产生某些其他代码可能依赖的效果。