timmy / 簡單實作資料庫依賴注入
0 喜欢
0 派生
1 文件
最后活跃于 7 months ago
| 1 | from abc import ABC, abstractmethod |
| 2 | |
| 3 | # 定義一個資料庫介面,規定大家都要有 connect 方法 |
| 4 | class IDatabase(ABC): |
| 5 | @abstractmethod |
| 6 | def connect(self): |
| 7 | pass |
| 8 | |
| 9 | # 具體實作 MySQL 版資料庫 |
| 10 | class MySQLDatabase(IDatabase): |
timmy / Flask + Prometheus 快速監控
0 喜欢
0 派生
1 文件
最后活跃于 7 months ago
使用 Flask 和 Prometheus 客戶端,快速設置基本的應用監控,輕鬆追蹤請求數量和延遲。
| 1 | from flask import Flask, Response |
| 2 | from prometheus_client import Counter, Summary, generate_latest, CONTENT_TYPE_LATEST |
| 3 | import time |
| 4 | |
| 5 | app = Flask(__name__) |
| 6 | |
| 7 | # 自訂 metrics |
| 8 | REQUEST_COUNT = Counter('app_requests_total', 'Total number of requests') |
| 9 | REQUEST_LATENCY = Summary('app_request_latency_seconds', 'Request latency') |
timmy / Flask API 與農曆轉換工具
0 喜欢
0 派生
4 文件
最后活跃于 7 months ago
結合 Flask 建立 API 服務,提供西曆與農曆的互轉功能,並自動尋找可用端口啟動服務。
| 1 | #!/usr/bin/env python3 |
| 2 | # converter.py |
| 3 | # 用於西曆與農曆互轉,已封裝成類別 |
| 4 | |
| 5 | import os |
| 6 | import json |
| 7 | import argparse |
| 8 | from datetime import datetime |
| 9 | |
| 10 | class Converter: |
timmy / 使用 pyenv 管理 Python 版本
1 喜欢
0 派生
3 文件
最后活跃于 6 months ago
透過 pyenv 安裝與管理多個 Python 版本,輕鬆切換和配置不同專案的 Python 環境。
| 1 | # 使用 Homebrew 安裝 pyenv,這是一個 Python 版本管理工具 |
| 2 | brew install pyenv |
| 3 | |
| 4 | # 從 pyenv.run 下載並執行安裝腳本,來安裝 pyenv |
| 5 | curl https://pyenv.run | bash |
| 6 | |
| 7 | # 設定 PYENV_ROOT 環境變數,指向 pyenv 的安裝目錄 |
| 8 | export PYENV_ROOT="$HOME/.pyenv" |
| 9 | |
| 10 | # 將 pyenv 的二進制目錄加入 PATH 環境變數,使其可執行 |
timmy / 使用 UV 管理 Python 環境
1 喜欢
0 派生
2 文件
最后活跃于 6 months ago
透過 UV 工具創建和管理 Python 虛擬環境,輕鬆安裝套件、更新依賴,並執行腳本。
| 1 | # 從 astral.sh 抓安裝腳本,直接裝 uv 工具,簡單又快速 |
| 2 | curl -Ls https://astral.sh/uv/install.sh | sh |
| 3 | |
| 4 | # 或者用 brew 安裝,Mac 用戶的最愛 |
| 5 | brew install uv |
| 6 | |
| 7 | # 創一個新的虛擬環境,隔離專案依賴,免得搞亂 |
| 8 | uv venv |
| 9 | |
| 10 | # 創一個新的虛擬環境,隔離專案依賴,免得搞亂 |
timmy / dataclass 與 NamedTuple 差異範例
0 喜欢
0 派生
2 文件
最后活跃于 8 months ago
示範 Python 中 dataclass 與 NamedTuple 的基本使用方式與差異,包含屬性定義、建立實例、存取欄位、是否可變等特性。
| 1 | from dataclasses import dataclass |
| 2 | |
| 3 | @dataclass |
| 4 | class Person: |
| 5 | name: str |
| 6 | age: int |
| 7 | email: str |
| 8 | |
| 9 | # 建立實例 |
| 10 | person1 = Person(name="Timmy", age=30, email="timmy@example.com") |
timmy / 📦 拆包裝全都行!Python *args / **kwargs 超實用教學
0 喜欢
0 派生
2 文件
最后活跃于 8 months ago
| 1 | def func(*args): |
| 2 | for arg in args: |
| 3 | print(arg) |
| 4 | |
| 5 | # Packing example: |
| 6 | func(1, 2, 3) # Output: 1 \n 2 \n 3 |
| 7 | |
| 8 | # Unpacking example: |
| 9 | my_list = [1, 2, 3] |
| 10 | func(*my_list) # Output: 1 \n 2 \n 3 |
timmy / 📆 閏年還是平年?一行 Python 判斷超直覺!
0 喜欢
0 派生
1 文件
最后活跃于 8 months ago
用最簡單的邏輯搞懂閏年判斷:被 4 整除但不能被 100 整除,或被 400 整除就對了 ✅
| 1 | def is_leap_year(year): |
| 2 | return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0) |
| 3 | |
| 4 | |
| 5 | # 調用 is_leap_year 函數來判斷特定年份是否為閏年 |
| 6 | year = 2024 # 請更改為您想要檢查的年份 |
| 7 | if is_leap_year(year): |
| 8 | print(f"{year} 年是閏年") |
| 9 | else: |
| 10 | print(f"{year} 年不是閏年") |
timmy / 📊 Streamlit + Tabulator:打造互動式資料表格超簡單
0 喜欢
0 派生
1 文件
最后活跃于 8 months ago
用 Streamlit + Tabulator.js 展示 DataFrame,支援欄位過濾、分頁、編輯,前端美觀又實用 🚀
| 1 | import streamlit as st |
| 2 | import pandas as pd |
| 3 | import json |
| 4 | import streamlit.components.v1 as components |
| 5 | |
| 6 | # 假設有一個 DataFrame |
| 7 | df = pd.DataFrame({ |
| 8 | "訂單單別": ["A", "B", "C"], |
| 9 | "訂單單號": [101, 102, 103], |
| 10 | "客戶簡稱": ["客戶1", "客戶2", "客戶3"], |
timmy / 🕒 Python 時間處理懶人包:轉字串、計算差、顯示幾分鐘前
0 喜欢
0 派生
1 文件
最后活跃于 8 months ago
常用的 datetime 工具函式:轉格式、計算秒數差、解析時間字串、顯示幾分鐘前/剛剛/幾天前等人類友善時間字串,寫後台超實用 ✅
| 1 | import math |
| 2 | import time |
| 3 | from datetime import datetime |
| 4 | |
| 5 | |
| 6 | # 轉換時間格式到字串(天) |
| 7 | def human_date(date=None): |
| 8 | if date: |
| 9 | assert isinstance(date, datetime) |
| 10 | else: |
上一页
下一页