9.Python 模組 (Module)
日期:2024/04/07
9.模組 (Module)
經過前幾章的教學想必你對基礎語法有觀念了吧?
第一章節曾提及『豐富且完整的套件,不必製造輪子及可以快速組裝你所需要的功能。』所說的就是模組 (Module)。
9.1 標準函式庫(Standard Library)
Python標準函式庫(Standard Library)內建了許多常用的模組,這些模組提供了廣泛的功能,可以幫助你解決各種任務和問題。以下是一些常見的 Python 標準函式庫模組:
基本語法
使用 import 語句可以將模組引入當前的程式中,從而可以使用該模組中定義的函式、類別等功能。
import module
某些時候引用的模組名稱重複或是太長我們可以透過as重新命名。
import module as m
常用模組
- os 模組:提供了與操作系統相關的功能,例如文件和目錄操作、環境變數等。
import os# 獲取當前工作目錄print(os.getcwd())# 列出指定目錄下的所有文件和目錄print(os.listdir('/path/to/directory'))
- sys 模組:提供了與 Python 解釋器相關的功能,例如獲取命令行參數、修改模組搜索路徑等。
- datetime 模組:提供了日期和時間的處理功能,例如創建日期時間對象、格式化日期時間字符串等。
from datetime import datetime# 獲取當前日期時間now = datetime.now()print(now)# 格式化日期時間字符串print(now.strftime('%Y-%m-%d %H:%M:%S'))
- math 模組:提供了數學運算的功能,例如數學常數、數學函式等。
import math# 計算平方根print(math.sqrt(25))# 計算sin值print(math.sin(math.pi / 2))
- random 模組:提供了生成隨機數的功能,例如生成隨機整數、隨機選擇等。
import random# 生成隨機整數print(random.randint(1, 10))# 隨機選擇列表中的一個元素print(random.choice(['apple', 'banana', 'orange']))
- re 模組:提供了正則表達式的功能,可以進行文本搜索和匹配操作。
- json 模組:提供了JSON數據的編解碼功能,可以將 Python 對象轉換為 JSON 格式,或將 JSON 格式的數據轉換為 Python 對象。
- csv 模組:提供了 CSV 文件的讀寫功能,可以方便地處理CSV格式的數據。
import csv# 讀取CSV文件with open('data.csv', 'r') as file:reader = csv.reader(file)for row in reader:print(row)# 寫入CSV文件with open('data.csv', 'w', newline='') as file:writer = csv.writer(file)writer.writerow(['Name', 'Age'])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 社群開發和分享的軟體。
pip install package_name
常用套件
numpy:用於數值計算的基礎套件,提供了多維陣列和數學函式,是許多科學計算和數據分析庫的基礎。
pandas:用於數據分析和處理的強大工具,提供了高性能的數據結構和數據操作功能,支持將數據加載、清理、轉換和分析。
matplotlib:用於繪製圖表和視覺化數據的庫,提供了各種繪圖函式和工具,可用於生成各種靜態、動態和交互式圖表。
scikit-learn:用於機器學習的庫,提供了各種機器學習算法和工具,包括分類、回歸、聚類、降維等。
tensorflow / pytorch:用於深度學習的框架,提供了各種神經網絡模型和訓練工具,可用於構建和訓練深度學習模型。
requests:用於發送HTTP請求和處理HTTP響應的庫,提供了簡潔而強大的API,可用於編寫網絡爬蟲、API客戶端等。
beautifulsoup4:用於解析HTML和XML文檔的庫,提供了方便的API和工具,可用於網絡爬蟲和數據提取。
pytest:用於編寫和運行測試的框架,提供了強大的功能和靈活的配置,可用於測試Python程式的各個方面。
flask:用於構建Web應用程序的輕量級框架,提供了簡單而強大的API,可用於快速構建和部署Web應用程序。
django:用於構建Web應用程序的全功能框架,提供了完整的Web開發工具和功能,可用於開發大型和複雜的Web應用程序。
9.3 期中專題
以上套件強大且好用,目前先不詳細介紹。
請製作一個小程式來總結目前所學。這個小程式將包含字串、串列、字典、邏輯判斷、迴圈、函式和模組。
1. 電子商務訂單管理系統
題目描述:
設計一個簡單的電子商務訂單管理系統,用戶可以添加新訂單、查詢訂單、總結訂單狀況等。
要求:
- 使用者可以添加新的訂單,每個訂單包括訂單編號、顧客姓名、商品名稱、數量和單價等信息。
- 使用者可以查詢特定訂單的詳細信息,包括訂單編號、顧客姓名、商品名稱、數量、單價和總價等。
- 使用者可以查詢所有訂單的總數量和總金額。
- 程式應該提供菜單選項,讓使用者可以根據菜單進行操作。
- 使用字典來存菜單資訊,商品名稱作為鍵,價格作為值。
加分要求:
- 使用 pip 套件 openpyxl 或是其他相似套件。
- 添加修改訂單和刪除訂單的功能。
- 添加保存訂單到文件和從文件讀取訂單的功能,以便訂單資料可以存儲。
2.出題系統
題目描述:
設計一個簡單的出題系統,用戶可以添加新題目、查詢題目、編輯題目等。
要求:
- 使用者可以添加新的題目,每個題目包括題目編號、題目內容、選項、答案等信息。
- 使用者可以查詢特定題目的詳細信息,包括題目編號、題目內容、選項和答案等。
- 使用者可以編輯現有的題目,包括修改題目內容、選項和答案等。
- 程式應該提供菜單選項,讓使用者可以根據菜單進行操作。
- 使用字典或列表來存儲題目信息,題目編號作為鍵,題目詳細信息作為值。
加分要求:
- 使用 pip 套件 openpyxl 或是其他相似套件。
- 添加刪除題目的功能。
- 添加保存題目到文件和從文件讀取題目的功能,以便題目資料可以存儲。
