在 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