HOWTO · Python

在 Python 中从文件中导入所有函数

我们可以使用 import * 函数从 Python 文件中导入所有函数。

本页内容

本教程将讨论从 Python 文件中导入所有函数的方法。

使用 Python 中的 import * 语句从文件中导入所有函数

import 语句用于在我们的 Python 代码中导入包、模块和库。

如果我们想从代码中的文件中导入所有内容,我们可以使用 import *。我们有一个名为 functions.py 的文件,其中包含两个函数 square() 和 cube()。

我们可以编写 from functions import * 来在我们的代码中导入这两个函数。然后我们可以在我们的代码中同时使用 square() 和 cube() 函数。

以下代码片段显示了此方法的工作实现。

from functions import *

print(cube(3))

输出:

27

我们使用 Python 中的 import * 语句在代码中的 functions.py 文件中导入了所有函数。

然后我们在 functions.py 文件中调用 cube() 函数并打印 3 的立方体。尽管此方法可以完成工作,但不建议使用它。

不使用 import * 方法的原因

这种方法使用隐式 import 语句,而在 Python 中我们总是建议使用显式 import 语句。

根据 Python 之禅,显式胜于隐式。这种说法有两个关键原因。

第一个原因是随着项目大小的增加,很难理解哪个函数来自哪个文件,我们最终会从多个文件中导入函数。其他人尤其难以阅读我们的代码并完全理解正在发生的事情。

它使我们的代码很难调试和维护。此问题在以下代码段中突出显示。

from functions import *
from functions1 import *
from functions2 import *

print(square(2))

输出:

4

在上面的代码片段中,仅仅看代码是不可能知道原始 square() 函数在哪里定义的。为了完全理解 square() 函数的起源,我们必须手动浏览所有文件。

第二个关键原因是,如果我们在多个文件中有两个同名的函数,解释器将使用最近的 import 语句。下面的代码片段演示了这种现象。

from functions2 import *
from functions import *

print(hello())

print(hello())
print(hello())

输出:

hello from functions
hello from functions2
hello from functions2

两个文件 functions.py 和 functions2.py 都包含一个 hello() 函数。

在输出的第一行,我们导入了 functions.py 文件,因此该文件中的 hello() 函数被执行。在输出的第二行和第三行中,我们还导入了 functions2.py 文件,其中包含一个 hello() 函数。

因此,新的 hello() 函数在最后两行输出中执行。