二、模組
-
模組是什麼?模組就是一個
.py
檔案,可以定義函式、類和變數,模組內也可能包含可執行的程式碼。 -
模組的作用
- 程式碼重用:模組可以將程式碼劃分為更小的單元,方便在其他檔案中重複使用。
- 組織和結構化程式碼:模組幫助將大型程式碼庫分解成邏輯單元,使程式碼結構更清晰。
- 避免命名衝突:模組引入了名稱空間機制,可以有效避免命名衝突。例如,兩個模組中的相同變數名不會互相干擾。
- 便於維護:透過模組化,開發者可以專注於一個模組的功能,便於修復錯誤、擴充套件功能或進行測試。
- 引入標準庫和第三方庫:Python提供了豐富的標準庫模組,可以直接匯入使用。此外,還可以透過
pip
引入第三方模組。
-
模組的使用
- 匯入整個模組
import math
- 匯入模組中指定的函式
from math import sqrt
- 給模組起別名
import math as m
- 匯入整個模組
-
如果某個模組A內部有可執行程式碼,其它模組匯入A時,怎麼避免執行這些可執行程式碼?
-
__name__
:當在本模組中執行時,會被替換成__main__
,如果其他模組使用到了該模組,就變成了該模組名。-
舉例子
# my_module.py 程式碼 def sayHello(name) : print("hello", name) sayHello("ouyang") print(__name__)
# main.py 程式碼 from my_module import sayHello sayHello("xx")
結果
ouyang@ouyangdeMacBook-Pro python_learn % python3 my_module.py hello ouyang __main__ ouyang@ouyangdeMacBook-Pro python_learn % python3 main.py hello ouyang my_module hello xx # 上述結果可以看見,在my_module中,__name__的結果就是__main__ # 而在main.py中,就是模組名
-
-
所以,當某些模型內部程式碼,不希望其他模型執行時,可以做如下操作
if __name__ == "__main__": sayHello("ouyang")
-
-
當使用
from 模組 import *
時,可以使用__all__ = ['函式名']
,來限制,只能匯入__all__
中的。
三、包
- 包(Package) 是一個組織管理模組的資料夾。包本質上是一個包含多個模組的目錄,其中每個模組都是一個
.py
檔案。包的作用是提供一種層次化的方式來組織和管理多個相關的模組,以便於在大型專案中有效地管理程式碼。 - 包的結構
- 目錄:包是一個目錄,其中包含多個模組或子包。
__init__.py
檔案:每個包目錄都必須包含__init__.py
檔案,來告訴Python直譯器該目錄是一個包。它的存在允許你在包和包內的模組之間建立匯入關係。__init__.py
檔案可以是空的,也可以包含初始化程式碼,在包被匯入時自動執行。
- 使用
- 匯入包中的模組
import my_package.module1
或者from my_package import module1
- 前者使用時要
my_package.module1.xxx
- 後者只需要
module1.xxx
- 前者使用時要
- 匯入包中的某個模組的某個函式
from my_package.module1 import sayBye
- 注意,沒有
import my_package.module1.sayBye
這種用法。
- 注意,沒有
- 匯入包中的模組
- 包的匯入機制
- 絕對匯入:使用完整的路徑匯入模組或包
- 相對匯入:在包內部使用相對路徑匯入模組或包。
- 可以在
__init__.py
中,使用__all__
控制允許匯入的模組 ,同樣,這隻能針對from 包 import *
有效
四、第三方庫
- 資料處理與分析
- NumPy:用於數值計算的基礎庫,提供多維陣列物件和豐富的數學函式。
- Pandas:用於資料分析和操作,提供資料表格(DataFrame)結構,適合資料清洗和操作。
- Matplotlib:繪相簿,用於建立靜態、動態和互動式視覺化。
- Seaborn:基於Matplotlib的高階視覺化庫,特別適用於統計資料的視覺化。
- SciPy:用於科學和工程計算,擴充套件了NumPy的功能。
- 機器學習與人工智慧
- Scikit-Learn:用於機器學習的工具包,支援分類、迴歸、聚類等基本演算法。
- TensorFlow:深度學習框架,由Google開發,支援神經網路的構建和訓練。
- PyTorch:另一個流行的深度學習框架,由Facebook開發,使用靈活且易於除錯。
- Keras:基於TensorFlow的高階神經網路庫,適合快速構建和實驗神經網路。
- XGBoost:用於提升樹模型的庫,適合構建高效的梯度提升模型,常用於競賽和實際應用。
- 網路開發
- Django:一個全功能的Web框架,適合快速構建複雜的Web應用。
- Flask:輕量級Web框架,適合快速原型開發和小型應用程式。
- Requests:簡化HTTP請求的庫,適合與Web API互動。
- Beautiful Soup:用於解析和抓取HTML和XML內容,常用於網路爬蟲。
- Scrapy:功能強大的網路爬蟲框架,適合構建高效的資料爬取專案。
- 資料視覺化
- Plotly:用於互動式圖表的庫,支援多種圖形型別,包括3D和金融圖表。
- Bokeh:建立互動式視覺化圖表,適合大資料量視覺化。
- Altair:基於Vega和Vega-Lite的宣告性資料視覺化庫,適合快速製作簡單的視覺化。
pip
基本使用- 安裝包
pip install 包名
:安裝指定的包,pip install 包名==版本號
:安裝指定的版本pip install -r requirements.txt
:從檔案中安裝pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name
:使用指定源安裝
- 解除安裝包
pip uninstall package_name
- 更新包
pip install --upgrade package_name
- 檢視已安裝的包
pip list
:列出已安裝的包pip list --outdated
:檢查包是否有可用的更新
- 安裝包