甲居工作室

9.Python 模組 (Module)

日期:2024/04/07

9.模組 (Module)

經過前幾章的教學想必你對基礎語法有觀念了吧?

第一章節曾提及『豐富且完整的套件,不必製造輪子及可以快速組裝你所需要的功能。』所說的就是模組 (Module)

9.1 標準函式庫(Standard Library)

Python標準函式庫(Standard Library)內建了許多常用的模組,這些模組提供了廣泛的功能,可以幫助你解決各種任務和問題。以下是一些常見的 Python 標準函式庫模組:

基本語法

使用 import 語句可以將模組引入當前的程式中,從而可以使用該模組中定義的函式、類別等功能。

  1. import module

某些時候引用的模組名稱重複或是太長我們可以透過as重新命名。

  1. import module as m

常用模組

  • os 模組:提供了與操作系統相關的功能,例如文件和目錄操作、環境變數等。
    1. import os
    2. # 獲取當前工作目錄
    3. print(os.getcwd())
    4. # 列出指定目錄下的所有文件和目錄
    5. print(os.listdir('/path/to/directory'))
  • sys 模組:提供了與 Python 解釋器相關的功能,例如獲取命令行參數、修改模組搜索路徑等。
  • datetime 模組:提供了日期和時間的處理功能,例如創建日期時間對象、格式化日期時間字符串等。
    1. from datetime import datetime
    2. # 獲取當前日期時間
    3. now = datetime.now()
    4. print(now)
    5. # 格式化日期時間字符串
    6. print(now.strftime('%Y-%m-%d %H:%M:%S'))
  • math 模組:提供了數學運算的功能,例如數學常數、數學函式等。
    1. import math
    2. # 計算平方根
    3. print(math.sqrt(25))
    4. # 計算sin值
    5. print(math.sin(math.pi / 2))
  • random 模組:提供了生成隨機數的功能,例如生成隨機整數、隨機選擇等。
    1. import random
    2. # 生成隨機整數
    3. print(random.randint(1, 10))
    4. # 隨機選擇列表中的一個元素
    5. print(random.choice(['apple', 'banana', 'orange']))
  • re 模組:提供了正則表達式的功能,可以進行文本搜索和匹配操作。
  • json 模組:提供了JSON數據的編解碼功能,可以將 Python 對象轉換為 JSON 格式,或將 JSON 格式的數據轉換為 Python 對象。
  • csv 模組:提供了 CSV 文件的讀寫功能,可以方便地處理CSV格式的數據。
    1. import csv
    2. # 讀取CSV文件
    3. with open('data.csv', 'r') as file:
    4. reader = csv.reader(file)
    5. for row in reader:
    6. print(row)
    7. # 寫入CSV文件
    8. with open('data.csv', 'w', newline='') as file:
    9. writer = csv.writer(file)
    10. writer.writerow(['Name', 'Age'])
    11. writer.writerow(['Alice', 30])

9.2 套件 (Package)

Python 套件(Python Package)是一個包含 Python 模組和相關資源的目錄,它可以包含Python程式碼、文檔、測試和其他必要檔案,以便在Python應用程序中使用。Python套件的目的是將相關的功能組織在一起,使其易於管理和重用。

白話說就是一個資料夾中有著寫好的程式碼及 init.py 的檔案,這樣我們就可以使用 import 將套件或套件中的模組引入到您的程式中。

Python Package Index (PyPI)

使用pip install的基本語法以及它的功能是很重要的,這是Python中安裝第三方套件的主要方式。

PyPI可協助尋找並安裝由 Python 社群開發和分享的軟體。

  1. pip install package_name

常用套件

  1. numpy:用於數值計算的基礎套件,提供了多維陣列和數學函式,是許多科學計算和數據分析庫的基礎。

  2. pandas:用於數據分析和處理的強大工具,提供了高性能的數據結構和數據操作功能,支持將數據加載、清理、轉換和分析。

  3. matplotlib:用於繪製圖表和視覺化數據的庫,提供了各種繪圖函式和工具,可用於生成各種靜態、動態和交互式圖表。

  4. scikit-learn:用於機器學習的庫,提供了各種機器學習算法和工具,包括分類、回歸、聚類、降維等。

  5. tensorflow / pytorch:用於深度學習的框架,提供了各種神經網絡模型和訓練工具,可用於構建和訓練深度學習模型。

  6. requests:用於發送HTTP請求和處理HTTP響應的庫,提供了簡潔而強大的API,可用於編寫網絡爬蟲、API客戶端等。

  7. beautifulsoup4:用於解析HTML和XML文檔的庫,提供了方便的API和工具,可用於網絡爬蟲和數據提取。

  8. pytest:用於編寫和運行測試的框架,提供了強大的功能和靈活的配置,可用於測試Python程式的各個方面。

  9. flask:用於構建Web應用程序的輕量級框架,提供了簡單而強大的API,可用於快速構建和部署Web應用程序。

  10. django:用於構建Web應用程序的全功能框架,提供了完整的Web開發工具和功能,可用於開發大型和複雜的Web應用程序。

9.3 期中專題

以上套件強大且好用,目前先不詳細介紹。
請製作一個小程式來總結目前所學。這個小程式將包含字串、串列、字典、邏輯判斷、迴圈、函式和模組。

1. 電子商務訂單管理系統

題目描述:

設計一個簡單的電子商務訂單管理系統,用戶可以添加新訂單、查詢訂單、總結訂單狀況等。

要求:

  1. 使用者可以添加新的訂單,每個訂單包括訂單編號、顧客姓名、商品名稱、數量和單價等信息。
  2. 使用者可以查詢特定訂單的詳細信息,包括訂單編號、顧客姓名、商品名稱、數量、單價和總價等。
  3. 使用者可以查詢所有訂單的總數量和總金額。
  4. 程式應該提供菜單選項,讓使用者可以根據菜單進行操作。
  5. 使用字典來存菜單資訊,商品名稱作為鍵,價格作為值。

加分要求:

  1. 使用 pip 套件 openpyxl 或是其他相似套件。
  2. 添加修改訂單和刪除訂單的功能。
  3. 添加保存訂單到文件和從文件讀取訂單的功能,以便訂單資料可以存儲。

2.出題系統

題目描述:

設計一個簡單的出題系統,用戶可以添加新題目、查詢題目、編輯題目等。

要求:

  1. 使用者可以添加新的題目,每個題目包括題目編號、題目內容、選項、答案等信息。
  2. 使用者可以查詢特定題目的詳細信息,包括題目編號、題目內容、選項和答案等。
  3. 使用者可以編輯現有的題目,包括修改題目內容、選項和答案等。
  4. 程式應該提供菜單選項,讓使用者可以根據菜單進行操作。
  5. 使用字典或列表來存儲題目信息,題目編號作為鍵,題目詳細信息作為值。

加分要求:

  1. 使用 pip 套件 openpyxl 或是其他相似套件。
  2. 添加刪除題目的功能。
  3. 添加保存題目到文件和從文件讀取題目的功能,以便題目資料可以存儲。

延伸閱讀

10.Python 例外 (Exception)

想必到目前為止應該看過許多的錯誤 (Error)訊息。然後就 88 了。此章節主要說明如何處理錯誤狀況,以防程式出錯而導致無法運行甚至發生其他狀況,如檔案毀損。

Read more

11.Python 類別 (Class)

『物件導向程式設計』(Object-oriented programming, OOP) 是一種程式開發的概念,以物件的概念來解決問題。 封裝、繼承、多型為物件導向的三大特性,本章節會略提此概念,…

Read more