导入python模块和别名子模块

时间:2018-08-30 07:01:19

标签: python python-3.x

python 3.7是否提供一种导入模块并仅对子模块进行别名的方法? 假设我有一个名为module的模块和一个子模块ridiculously_long_submodule_name,我想为其加上别名short_submodule

有没有一种方法可以仅对子模块起别名,以便可以通过module.short_submodule进行调用? 我尝试了明显的from module import ridiculously_long_submodule_name as module.short_submodule导致语法错误。 我真的想避免在没有主模块名的情况下导入它,因为我的其余代码存在混淆问题

1 个答案:

答案 0 :(得分:1)

对于将module.ridiculously_long_submodule_name别名为module.short_submodule并没有专用的语法,虽然您可能会混淆模块的属性以手动进行操作,但这不是一个好主意。

设置为导入as的别名在导入发生的作用域内是本地的,以避免名称冲突,但是将module.short_submodule设置为所需的子模块将是全局更改。程序中的所有代码都会看到它,因为除非您对__getattribute__十分着迷,否则就不会出现“本地”对象具有属性的情况。

module中的甚至代码都将看到意外的新全局变量。如果module的作者曾经想使用short_submodule的名称,那可能会造成非常讨厌的冲突,但是即使这样,与其他库混用也会使必须维护或调试的人感到困惑。您的代码,包括从现在起12个月的代码。

只需import module.ridiculously_long_submodule_name as submod。请勿在别名上加上module.前缀。