任何包含 Python 代碼的.py
擴展名的文本文件基本上都是一個模塊。函數、類、變量、常量等不同的 Python 對象。,可以通過使用import
語句使解釋器會話或另一個 Python 腳本可用。 內置模塊中定義的功能需要導入後才能使用。類似地,自定義模塊可能包含一個或多個用戶定義的 Python 對象。這些對象可以在解釋器會話或其他腳本中導入。
如果編程算法需要定義大量的函數和類,那麼它們就被邏輯地組織在模塊中。一個模塊存儲類、函數和其他類似相關的資源。代碼的這種模塊化結構使其易於理解、使用和維護。
創建模塊
下圖是包含sum()
函數定義的 Python 腳本。保存為calc.py
。
calc.py
def sum(x, y):
return x + y
導入模塊
我們現在可以導入這個模塊,並在 Python shell 中執行sum()
函數。
Example: Importing a Module
>>> import calc
>>> calc.sum(5, 5)
10
同樣,要在另一個 Python 腳本中使用上面的calc
模塊,請使用 import 語句。
每個模塊,無論是內置的還是定製的,都是一個模塊類的對象。使用內置的type()
功能驗證不同模塊的類型,如下圖所示。
Example: Module Type
>>> import math
>>> type(math)
<class 'module'>
>>> import calc
>>> type(calc)
<class 'module'>
重命名導入的模塊
使用as
關鍵字重命名導入的模塊,如下圖所示。
Example:
>>> import math as cal
>>> cal.log(4)
1.3862943611198906
從..導入語句
上面的 import 語句將加載當前工作環境中模塊的所有資源(也稱為名稱空間)。使用以下語法可以從模塊中導入特定對象。比如下面的模塊calc.py
裏面有三個功能。
calc.py
def sum(x,y):
return x + y
def average(x, y):
return (x + y)/2
def power(x, y):
return x**y
現在,我們可以使用…導入語句。例如,下面的代碼在 test.py 中只導入了兩個函數。
Example: Importing Module’s Functions
>>> from functions import sum, average
>>> sum(10, 20)
30
>>> average(10, 20)
15
>>> power(2, 4)
以下示例僅導入一個函數 sum。
Example: Importing Module’s Function
>>> from functions import sum
>>> sum(10, 20)
30
>>> average(10, 20)
您也可以使用from...import *
語法導入它的所有函數。
Example: Import Everythin from Module
>>> from functions import *
>>> sum(10, 20)
30
>>> average(10, 20)
15
>>> power(2, 2)
4
模塊搜索路徑
當在交互會話或腳本中遇到 import 語句時:
- 首先,Python 解釋器試圖在當前工作目錄中定位模塊。
- 如果沒有找到,將搜索 PYTHONPATH 環境變量中的目錄。
- 如果仍未找到,它將搜索安裝默認目錄。
當 Python 解釋器啟動時,它將上述所有位置放在 sys.path 屬性返回的列表中。
Example: Module Attributes
>>> import sys
>>> sys.path
['','C:\\python36\\Lib\\idlelib', 'C:\\python36\\python36.zip',
'C:\\python36\\DLLs', 'C:\\python36\\lib', 'C:\\python36',
'C:\\Users\\acer\\AppData\\Roaming\\Python\\Python36\\site-packages',
'C:\\python36\\lib\\site-packages']
如果所需模塊不存在於上述任何目錄中,則會拋出消息ModuleNotFoundError
。
>>> import MyModule
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'MyModule'
重新加載模塊
假設您已經導入並使用了一個模塊。但是,模塊所有者在您導入模塊後添加或修改了一些功能。因此,您可以使用imp
模塊的reload()
功能重新加載模塊以獲取最新的模塊,如下所示。
Example: Reloading Module
>>> import imp
>>> imp.reload(calc)
<module 'calc' (built-in)>
獲取模塊幫助
使用幫助()功能了解模塊的方法和屬性。例如,調用help("math")
了解math
模塊。 如果您已經導入了一個模塊,請提供其名稱,例如help(math)
。
Getting Help on Module
如上所示,您可以看到方法名稱和描述。它不會顯示以- More -結尾的幫助頁面。按回車鍵查看更多幫助。
也可以使用 dir() 函數知道模塊的名稱和屬性。
Know Module Attributes and Methods
在下一章中了解模塊屬性。**
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/276014.html