python 3.7是否提供一种导入模块并仅对子模块进行别名的方法?
假设我有一个名为module
的模块和一个子模块ridiculously_long_submodule_name
,我想为其加上别名short_submodule
有没有一种方法可以仅对子模块起别名,以便可以通过module.short_submodule
进行调用?
我尝试了明显的from module import ridiculously_long_submodule_name as module.short_submodule
导致语法错误。
我真的想避免在没有主模块名的情况下导入它,因为我的其余代码存在混淆问题
答案 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.
前缀。