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

Muhammad Maisam Abbas 2023年1月30日
  1. 使用 Python 中的 import * 语句从文件中导入所有函数
  2. 不使用 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.pyfunctions2.py 都包含一个 hello() 函数。

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

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

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相关文章 - Python Import