在 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()
函数在最后两行输出中执行。
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