如何在Python中比較模組、類和名稱空間?
Python允許你將定義儲存到檔案中,然後在指令碼或互動式直譯器例項中使用它們。模組是一個包含可以匯入到其他模組或主模組中的定義的檔案。
因此,Python模組只不過是一個包含可重用程式碼的包。模組儲存在一個包含__init__.py檔案的資料夾中。模組可以包含函式和類。import關鍵字用於匯入模組。包含Python命令和定義的檔案稱為模組。
這些名為.py的檔案包含Python程式碼,例如example.py,模組名稱為example。模組用於將大型應用程式分解成更小、更易於管理的檔案。使用模組的先決條件是你應該安裝Python 3並設定程式設計環境。
Python中的模組
模組本質上是一組包含類和函式的檔案。你可以使用現有的模組或在python中構建自定義模組。在下面的示例中,你可以瞭解如何建立一個簡單的使用者定義模組。
示例
讓我們來看一個建立簡單python模組的例子。讓我們建立一個名為ad.py的python檔案。
def add(x, y): return (x+y)
輸出
儲存上述檔案後,將執行以下操作:建立一個名為ad.py的模組。
Python中的名稱空間
在Python中,我們可以將定義從一個模組匯入到另一個模組或互動式直譯器中。為此,我們使用import關鍵字。名稱空間是一種實現作用域的方法。每個包、模組、類、函式和方法函式在Python中都有自己的“名稱空間”,變數名在其中解析。
當函式、模組或包被求值(即執行開始時)時,就會建立一個名稱空間。可以將其視為“求值上下文”。例如,當函式完成執行時,名稱空間將被移除。變數已被移除。如果在區域性名稱空間中找不到名稱,還會使用全域性名稱空間。
Python程式中有四種不同的名稱空間:
內建
全域性
閉包
區域性
這些具有不同的生命週期。名稱空間根據需要在Python程式執行過程中建立和刪除。通常會有許多名稱空間同時處於活動狀態。
內建名稱空間
所有Python的內建物件都有名稱,這些名稱都包含在內建名稱空間中。執行Python時,這些始終可用。
示例
例如,當我們執行賦值a = 2時,a是我們賦予它的名稱,2是儲存在記憶體中的物件。透過內建函式id,我們可以獲取某個物件在記憶體中的地址()。讓我們檢查一下它的應用。
a = 2 print('id(2) =', id(2)) print('id(a) =', id(a))
輸出
獲得的輸出如下。
id(2) = 140378523304208 id(a) = 140378523304208
全域性名稱空間
多個名稱空間可以包含相同的物件名稱,因為每個名稱空間都保持與其他名稱空間的隔離。
示例
下面的例子可以用來理解全域性名稱空間。
count = 10 def method(): global count count = count + 1 print(count) method()
輸出
獲得的輸出如下。
11
區域性名稱空間
類、函式、迴圈或任何其他型別的程式碼塊都有一個宣告的區域性名稱空間。函式或程式碼塊的已定義名稱特定於這些區域。變數名只能在其定義的函式或程式碼塊內訪問。
示例
在這種情況下,函式add在區域性名稱空間中定義變數num1、num2和temp。
N1 = 20 N2 = 30 def add(num1, num2): temp = num1 + num2 return temp
輸出
獲得的輸出如下。
50