在 Python 中從檔案中匯入所有函式

Muhammad Maisam Abbas 2023年1月30日 2022年5月17日
  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 functions import *
print(hello())
from functions2 import *
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