Python 中 "import as" 的用例

Use case for "import as" in Python

我想知道我们是否可以使用“import as”来创建相对紧凑或可读的代码。我知道它基于 PEP 的常用用例,例如避免名称冲突。

情况如下(为了演示目的,保持简单)。假设我有一个模块名称,process_words.py.

process_words.py:

def word_to_lower(word):
    return word.lower

process_article.py(让主脚本):

import process_words

word = "HELLO"
word_lower = process_words.word_to_lower(word)
print(word_lower)

现在做这样的事情是好事还是坏事?:

import process_words as pw

word = "HELLO"
word_lower = pw.word_to_lower(word)
print(word_lower)

这是一个非常简单的例子。我有几个模块,每个模块都有几个功能。使用 from module import something 导入每个函数不是一个选项。对我来说,感觉如果我将 import as 与一些快捷方式名称一起使用,它会提高代码的可读性。有什么想法吗?

注意:我在这里指的是自定义模块。

一个实际问题是您从哪里开始更改所使用的库或模块,以及您可以在不更改代码的情况下切换实际导入的位置:import somemodule 将变为 import newmodule as somemodule

当我有 Python 2/3 兼容性代码时,这是我在 try-except 块中做的事情(我想像 six 这样的包有很多这样的代码)。例如:

try:
    # Are we using Python 2?
    import StringIO as io
except ImportError:
    # No, we're using Python 3 instead
    import io

通常应尽可能避免这种情况。

然而,当导入名称无处不在时,它会产生很大的效果,例如 numpy 是 always np,pandas 是 总是pd。你不必查找名称,你坐在一个看不见的代码库前:你看到 np.array 你就知道发生了什么。虽然只是稍微短了一点,但可以更轻松地跳过它。

另一个可能有用的地方是在一个模块中到处使用另一个模块,每隔几行或十行就是对该模块的调用。然后我会考虑使用 as import 来减小文件的大小(用于读取)。
我之前用一个烧瓶应用程序做过这个,它是一个(可测试的)模块的非常薄的包装器。

如果它只是一个内部 API(并且从上下文中可以完全清楚地理解其含义),那么将其命名为 pw.py 而不是 process_words.py 或许更有意义。 IMO 它有点短,但 words.py 可能效果很好(但是 "process" 有点通用词,所以我可能会寻找更具体的动词...)。
上下文很重要,作为 words 的子模块,例如将其称为 funcs 可能有意义。