使用别名导入模块

使用别名导入模块,第1张

使用别名导入模块

使用

import module as name
不会 创建一个别名。您误解了导入系统。

导入有两件事:

  1. 将模块加载到内存中,并将结果存储在中
    sys.modules
    。此 *** 作仅执行 一次 ;后续导入将重用已经加载的模块对象。
  2. 在当前名称空间中绑定一个或多个名称。

as name
语法使您可以在最后一步中控制名称。

对于

from module importname
语法,您仍然需要命名完整模块,如中
module
所查找
sys.modules
。如果您真的想为此使用别名,则必须在此处添加额外的引用:

import numpy  # loads sys.modules['numpy']import syssys.modules['np'] = numpy  # creates another reference

但是
,在导入子模块时,这样做也会产生副作用。一般而言,您不想在

sys.modules
不为所有(可能的)子模块创建别名的情况下通过拨入来为包创建别名,否则可能会导致Python将子模块重新导入为单独的命名空间。

这种情况下 ,导入

numpy
还会触发的加载
numpy.linalg
,因此您真正要做的就是:

import numpy as np# np.linalg now is available

不需要模块别名。对于不会自动导入子模块的软件包,您必须使用:

import package as aliasimport package.submodule

alias.submodule
始终可用,因为子模块始终作为属性添加到父包中。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5647396.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存