timmy / 使用 pydantic 進行數據驗證與模型定義
0 likes
0 forks
3 files
Last active 9 months ago
pydantic 提供基於 Python 類別的數據驗證與解析功能,適用於 API 請求驗證、資料模型定義、設定管理 等場景。
| 1 | from pydantic import BaseModel, Field, ValidationError |
| 2 | |
| 3 | class User(BaseModel): |
| 4 | name: str = Field(..., title="使用者名稱", min_length=2) |
| 5 | age: int = Field(..., gt=0, le=150, description="年齡必須介於 1 到 150 之間") |
| 6 | email: str |
| 7 | |
| 8 | # 測試資料 |
| 9 | try: |
| 10 | user = User(name="Tim", age=30, email="tim@example.com") |
timmy / 使用 importlib 進行動態模組載入
0 likes
0 forks
3 files
Last active 9 months ago
importlib 允許在執行時動態載入模組,適用於 外部插件管理、模組熱加載、延遲載入以提升效能 等場景。
| 1 | import importlib |
| 2 | |
| 3 | # 動態載入內建模組 |
| 4 | math_module = importlib.import_module("math") |
| 5 | print(math_module.sqrt(16)) # 4.0 |
| 6 | |
| 7 | # 動態載入自訂模組 |
| 8 | module_name = "my_module" # 假設有 my_module.py |
| 9 | custom_module = importlib.import_module(module_name) |
| 10 | print(custom_module.hello()) # 假設 my_module 有 hello() 函式 |
timmy / 使用 functools 進行函式工具操作
0 likes
0 forks
3 files
Last active 9 months ago
functools 模組提供多種函式工具,如記憶化(lru_cache)、部分應用(partial)和函式包裝(wraps),適用於提升效能、簡化回呼函式與裝飾器開發。
| 1 | import functools |
| 2 | |
| 3 | @functools.lru_cache(maxsize=5) |
| 4 | def fibonacci(n): |
| 5 | """計算費氏數列(具備快取功能)""" |
| 6 | if n < 2: |
| 7 | return n |
| 8 | return fibonacci(n - 1) + fibonacci(n - 2) |
| 9 | |
| 10 | print(fibonacci(10)) # 快速計算 |
timmy / 使用 ABC 定義抽象類別
0 likes
0 forks
1 files
Last active 9 months ago
ABC(Abstract Base Class)允許定義抽象類別,強制子類別實作特定方法,適用於建立統一的介面規範,確保繼承的類別都遵守特定的行為。
| 1 | from abc import ABC, abstractmethod |
| 2 | |
| 3 | # 定義抽象類別 |
| 4 | class Animal(ABC): |
| 5 | @abstractmethod |
| 6 | def make_sound(self) -> str: |
| 7 | """所有動物都必須實作此方法""" |
| 8 | pass |
| 9 | |
| 10 | # 繼承並實作抽象方法 |
timmy / 使用 ThreadPoolExecutor 進行多執行緒任務管理
0 likes
0 forks
1 files
Last active 9 months ago
ThreadPoolExecutor 提供了一種簡單的方式來管理多執行緒,適用於 I/O 密集型任務(如網路請求、檔案處理、資料庫查詢),提高執行效率。
| 1 | from concurrent.futures import ThreadPoolExecutor, as_completed |
| 2 | import time |
| 3 | |
| 4 | def task(n): |
| 5 | """模擬一個耗時任務""" |
| 6 | time.sleep(n) |
| 7 | return f"Task {n} completed after {n} seconds" |
| 8 | |
| 9 | # 建立執行緒池 |
| 10 | with ThreadPoolExecutor(max_workers=3) as executor: |
timmy / 使用 PIL(Pillow)處理影像
0 likes
0 forks
1 files
Last active 9 months ago
PIL(Pillow)是一個強大的 Python 影像處理庫,可用於開啟、編輯、轉換與儲存影像,適用於影像分析、自動化處理與視覺化應用。
| 1 | from PIL import Image |
| 2 | |
| 3 | # 開啟影像 |
| 4 | image = Image.open("example.jpg") |
| 5 | |
| 6 | # 顯示影像 |
| 7 | image.show() |
| 8 | |
| 9 | # 轉換為灰階 |
| 10 | gray_image = image.convert("L") |
timmy / 使用 zmq 進行跨進程或分散式訊息傳遞
0 likes
0 forks
2 files
Last active 9 months ago
zmq(ZeroMQ)是一個高效能的訊息佇列庫,可用於進程間通訊(IPC)、分散式系統與即時訊息傳輸,適用於微服務架構、物聯網(IoT)和高效能計算應用。
| 1 | import zmq |
| 2 | |
| 3 | # 設置 ZeroMQ 上下文 |
| 4 | context = zmq.Context() |
| 5 | socket = context.socket(zmq.REP) # 設定為回應 (REP) 模式 |
| 6 | socket.bind("tcp://*:5555") # 監聽 5555 埠口 |
| 7 | |
| 8 | print("伺服器啟動,等待客戶端請求...") |
| 9 | |
| 10 | while True: |
timmy / 使用 typing 進行型別註解
0 likes
0 forks
1 files
Last active 9 months ago
typing 模組允許為 Python 變數、函式參數和回傳值指定型別,有助於提升程式碼可讀性、可維護性,並可搭配靜態分析工具(如 mypy)檢查型別錯誤。
| 1 | from typing import Any, Dict, List, Optional, Tuple, Union |
| 2 | |
| 3 | # 函式使用型別註解 |
| 4 | def process_data( |
| 5 | data: List[Dict[str, Union[int, float]]], |
| 6 | metadata: Optional[Dict[str, Any]] = None |
| 7 | ) -> Tuple[int, float]: |
| 8 | """計算資料的總和與平均值""" |
| 9 | total = sum(item["value"] for item in data) |
| 10 | avg = total / len(data) if data else 0 |
timmy / 使用 re 進行正規表示式匹配
0 likes
0 forks
1 files
Last active 9 months ago
re 模組提供強大的正規表示式功能,可用於文字搜尋、字串處理與資料驗證,適用於日誌分析、表單驗證與文字解析等場景。
| 1 | import re |
| 2 | |
| 3 | # 定義正規表示式模式 |
| 4 | pattern = r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b" |
| 5 | |
| 6 | # 測試字串 |
| 7 | text = "聯絡我們: support@example.com 或 visit@example.org" |
| 8 | |
| 9 | # 搜尋第一個匹配的電子郵件 |
| 10 | match = re.search(pattern, text) |
timmy / 使用 psutil 監控系統資源
0 likes
0 forks
1 files
Last active 9 months ago
| 1 | import psutil |
| 2 | |
| 3 | # 獲取 CPU 使用率 |
| 4 | cpu_usage = psutil.cpu_percent(interval=1) |
| 5 | print(f"CPU 使用率: {cpu_usage}%") |
| 6 | |
| 7 | # 獲取記憶體資訊 |
| 8 | memory_info = psutil.virtual_memory() |
| 9 | print(f"總記憶體: {memory_info.total / (1024**3):.2f} GB") |
| 10 | print(f"可用記憶體: {memory_info.available / (1024**3):.2f} GB") |