本次講座將涵蓋 Python 中的模塊和包。
它們是以文件的形式組織代碼的一種方式,如果您打算使用 Python 構建 Web 應用程序,它們非常重要
模塊
Python 中的模塊基本上是一個包含一些 Python 代碼的文件,我們使用這些代碼將代碼組織成文件。 把它想像成超市裡的部分。 當你去超市時,水果、蔬菜、清潔產品等有不同的部分。你不會看到一個部分包含所有產品。
這與編程中的概念相同。 我們不是用 main.py 中的所有函數和類編寫所有代碼,而是將代碼分解為多個文件。 每個文件稱為一個模塊。 有了這個,我們的代碼不僅可以更好地組織和結構化,而且我們還可以重用我們的代碼。 讓我們通過一個例子來看看。
讓我們定義兩個函數來將重量從磅轉換為公斤,反之亦然。
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
現在,我們可以將這兩個函數放在一個單獨的模塊中,稱為“轉換器”,然後可以將其導入任何需要這些轉換器函數的程序中。 讓我告訴你如何做到這一點。
讓我們打開我們的項目面板並右鍵單擊該項目並添加一個新文件。 我們將把這個文件稱為“Converters.py”。
現在從默認文件中復制代碼並將其粘貼到“Converters.py”中。
有了這個,我們已經清理了我們的主模塊,它並沒有因為不同的功能而臃腫。 隨著我們用類編寫更多函數,我們將它們放在相應的模塊中。 一個模塊應該包含所有相關的函數和類。 現在,我們要將轉換器模塊導入我們的應用程序模塊。 為此,請編寫 import converters
在頂部沒有擴展名“.py”。
我們可以使用類似於方法的點運算符來訪問模塊的成員。
讓我們將 70 公斤轉換為磅:
還有另一種用於導入模塊的語法。 我們可以從該模塊中導入特定功能,而不是導入整個模塊。 我們可以輸入 from Converters import
並按“控制+空格”顯示可用功能列表。 有了這個,我們就可以直接調用這個函數了。
行使
這是你的練習。
這與我們討論的講座中的一個練習有關“for 循環” 我們編寫了一個程序來從列表中找出最大的數字
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
該代碼目前沒有組織。 我們沒有任何功能或模塊,程序寫在一個文件中。 這對於小型程序來說是可以的,但是隨著程序的增長,您需要將代碼正確地組織到類和模塊中。 因此,作為本練習的一部分,我希望你編寫一個函數,調用它 find_max
. 此函數應獲取一個列表並返回該列表中的最大數字。 之後繼續把這個函數放在一個單獨的模塊中,從這裡提取它並將它放在一個名為的模塊中 utils
. 這個模塊應該包含一堆實用功能。 導入 utils
模塊進入當前模塊並調用 find_max
功能。 最後,得到結果並在終端上打印出來。
這個練習有點挑戰性,但很容易做到。
解決方案
首先定義一個函數 find_max
並添加一個名為 numbers 的參數。 在此函數中,編寫查找列表中最大數的算法。
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
將此代碼作為模塊保存在文件“utils.py”中。
回到我們的主程序,只需通過兩種語法中的任何一種導入模塊並執行邏輯即可。
一件事,我需要引起你的注意是被破壞的 max
. 原因是 max
是 Python 中的內置函數,我們正在重新定義它。 所以這是來自 Python編譯器 我們不能再使用 max 作為它的內置函數。
Python中的內置模塊
Python 帶有一個標準庫,其中包含幾個用於常見任務的模塊,例如發送電子郵件、處理日期和時間、生成隨機值和密碼等。 Python 中已經內置了很多模塊,這意味著我們已經有很多可以重用的功能。 你可以找到這些模塊 点击這裡.
配套
包基本上是在模塊之上組織代碼的另一種方式。 一個真正的項目可能包含數百甚至數千個模塊,隨著時間的推移,我們的目錄會因為大量文件而變得臃腫。 因此,更好的方法是將相關模塊組織在一個包內,使包成為多個模塊的容器。
將一個新目錄添加到項目中,並且所有相關模塊都添加到該目錄中。 舉個例子,想想一個商場。 商場裡有不同的男裝、女裝和童裝區,就像包裹一樣。 每個部分都有不同的區域用於不同種類的產品,如鞋子、T 恤和夾克。 將這些視為模塊。
讓我們看看如何在 Python 中創建和使用包。
首先,從項目面板中添加一個新目錄。 我們稱之為“電子商務”。 該軟件包將包含與電子商務應用程序相關的所有模塊。
它仍然是一個空目錄,要將其轉換為一個包,我們需要在其中創建一個特殊文件。 在此目錄中添加一個新的 python 文件並將該文件命名為“__init__”。 這是 Python 中的一個特殊約定,當 Python 解釋器在目錄中看到具有此名稱的文件時,它會將這個目錄視為一個包。
我們還有另一種簡潔的方法來創建包。 只需右鍵單擊項目面板並從列表中創建一個 Python 包。 將其命名為“電子商務”,就是這樣。 它將自動創建一個目錄,其中包含一個名為“__init__”的 Python 文件。
現在,讓我們在包中創建一個模塊並將其命名為“shipping”。 在這個模塊中,讓我們創建一個計算運費的簡單函數。
def calc_shipping():
print("calc_shipping")
要在我們的主模塊中訪問這個功能,我們必須通過電子商務包來訪問它。 再一次,我們有兩種方法來導入這個模塊。
在第一種方法中,我們可以導入整個模塊,然後像這樣獨立調用一個函數:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
但是,使用這種方法,調用此模塊的其中一個函數需要在其前面加上 eCommerce.shipping.
這是非常冗長的。 因此,在處理包時,我們經常使用第二種方法並使用 from
聲明。
from eCommerce.shipping import calc_shipping
calc_shipping()
如果您在一個模塊中有多個功能,您可以通過在它們之間使用逗號將它們全部導入一行。 假設我們的運輸模塊中有另一個計算稅金的函數。 這將像這樣導入:
from eCommerce.shipping import calc_shipping, calc_tax
您還可以導入單個模塊並保留函數以在程序的稍後階段調用。 讓我們導入模塊 shipping 然後使用點運算符調用函數 calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
包起來!
包和模塊在 Python 中非常重要。 特別是當你想使用像 Django 這樣用於構建的框架時 網絡應用 用 Python。 我們將在另一門 Python 課程中研究 Django。
這是本系列的最後一次常規講座。 下一節課將偏離我們通常的格式,我們將學習 Python 中的一些重要用例。 這將標誌著本系列的結束,我們將繼續我們的下一個 Python 系列。 請繼續關注。
發表評論