Python包和模組管理

ouyangxx發表於2024-11-14

二、模組

  1. 模組是什麼?模組就是一個.py檔案,可以定義函式、類和變數,模組內也可能包含可執行的程式碼。

  2. 模組的作用

    • 程式碼重用:模組可以將程式碼劃分為更小的單元,方便在其他檔案中重複使用。
    • 組織和結構化程式碼:模組幫助將大型程式碼庫分解成邏輯單元,使程式碼結構更清晰。
    • 避免命名衝突:模組引入了名稱空間機制,可以有效避免命名衝突。例如,兩個模組中的相同變數名不會互相干擾。
    • 便於維護:透過模組化,開發者可以專注於一個模組的功能,便於修復錯誤、擴充套件功能或進行測試。
    • 引入標準庫和第三方庫:Python提供了豐富的標準庫模組,可以直接匯入使用。此外,還可以透過pip引入第三方模組。
  3. 模組的使用

    • 匯入整個模組import math
    • 匯入模組中指定的函式from math import sqrt
    • 給模組起別名import math as m
  4. 如果某個模組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")
      
  5. 當使用from 模組 import *時,可以使用__all__ = ['函式名'],來限制,只能匯入__all__中的。

三、包

  1. 包(Package) 是一個組織管理模組的資料夾。包本質上是一個包含多個模組的目錄,其中每個模組都是一個 .py 檔案。包的作用是提供一種層次化的方式來組織和管理多個相關的模組,以便於在大型專案中有效地管理程式碼。
  2. 包的結構
    • 目錄:包是一個目錄,其中包含多個模組或子包
    • __init__.py 檔案:每個包目錄都必須包含 __init__.py 檔案,來告訴Python直譯器該目錄是一個包。它的存在允許你在包和包內的模組之間建立匯入關係。__init__.py 檔案可以是空的,也可以包含初始化程式碼,在包被匯入時自動執行。
  3. 使用
    • 匯入包中的模組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這種用法。
  4. 包的匯入機制
    • 絕對匯入:使用完整的路徑匯入模組或包
    • 相對匯入:在包內部使用相對路徑匯入模組或包。
  5. 可以在__init__.py中,使用__all__控制允許匯入的模組 ,同樣,這隻能針對from 包 import *有效

四、第三方庫

  1. 資料處理與分析
    • NumPy:用於數值計算的基礎庫,提供多維陣列物件和豐富的數學函式。
    • Pandas:用於資料分析和操作,提供資料表格(DataFrame)結構,適合資料清洗和操作。
    • Matplotlib:繪相簿,用於建立靜態、動態和互動式視覺化。
    • Seaborn:基於Matplotlib的高階視覺化庫,特別適用於統計資料的視覺化。
    • SciPy:用於科學和工程計算,擴充套件了NumPy的功能。
  2. 機器學習與人工智慧
    • Scikit-Learn:用於機器學習的工具包,支援分類、迴歸、聚類等基本演算法。
    • TensorFlow:深度學習框架,由Google開發,支援神經網路的構建和訓練。
    • PyTorch:另一個流行的深度學習框架,由Facebook開發,使用靈活且易於除錯。
    • Keras:基於TensorFlow的高階神經網路庫,適合快速構建和實驗神經網路。
    • XGBoost:用於提升樹模型的庫,適合構建高效的梯度提升模型,常用於競賽和實際應用。
  3. 網路開發
    • Django:一個全功能的Web框架,適合快速構建複雜的Web應用。
    • Flask:輕量級Web框架,適合快速原型開發和小型應用程式。
    • Requests:簡化HTTP請求的庫,適合與Web API互動。
    • Beautiful Soup:用於解析和抓取HTML和XML內容,常用於網路爬蟲。
    • Scrapy:功能強大的網路爬蟲框架,適合構建高效的資料爬取專案。
  4. 資料視覺化
    • Plotly:用於互動式圖表的庫,支援多種圖形型別,包括3D和金融圖表。
    • Bokeh:建立互動式視覺化圖表,適合大資料量視覺化。
    • Altair:基於Vega和Vega-Lite的宣告性資料視覺化庫,適合快速製作簡單的視覺化。
  5. 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:檢查包是否有可用的更新

相關文章