从多行导入,从X导入Y并将其命名为Z。

3
有没有办法在多行导入中使用from X import Y as Z的惯用语?具体来说,我想像这样写:from some.very.long.package.name import LongName as OtherLongName,但整个代码放不进一行。因此,我尝试使用括号将其跨行编写,但发现as关键字会出现一些奇怪的行为。具体来说:
#this is just fine
from os import (
  path)

#this is a syntax error
from os import (
  path) as os_path

我想要实现自己的目标,唯一我找到的方法是:

只有这样才能实现我的愿望:

from some.very.long.package.name import (
  LongName)
OtherLongName = LongName

有没有一种方法可以用一个语句来完成?
1个回答

5
在您想要停止的位置添加一个斜线:
from some.very.long.package.name import \
                 LongName as OtherLongName

没有它,Python会认为该行已结束并引发SyntaxError错误。
如果您觉得对字符串进行操作更方便,您还可以使用importlib.import_module
from importlib import import_module
OtherLongName = import_module('some.very.long.package.name.LongName')

这是一个可读性问题,因为导入语句嵌入到函数中。使用斜杠强制下一行不使用任何缩进,这使结果难以阅读。 - aestrivex
1
@aestrivex 你也可以使用 importlib 来操作字符串。 - vaultah
importlib是一个很好的建议。我审美上不喜欢斜杠操作符,认为importlib解决方案更加清晰简洁。谢谢! - aestrivex
@aestrivex 不好意思,我搞混了。importlib模块从Python 2.7起存在于STL中。完整版的importlib模块是在Python 3.1中引入的。抱歉:( - vaultah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接