日常工作需要寫很多指令碼和小專案,分享一些經驗和程式碼習慣,比較主觀,有愛自取,求同存異。
使用 tqdm 包檢視處理進度,複雜情況可以考慮 fastprogress
引數過多,並且希望終端直接修改,推薦 YACS — Yet Another Configuration System
如果可配置引數比較多,使用容易錯誤,可以增加確認的過程
enter = raw_input("confirm (y/n): ") if enter.lower() != 'y': exit()
無需前端知識,可以使用開源庫 streamlit 快速構建機器學習相關的 web debug 工具 Streamlit — The fastest way to build custom ML tools
import streamlit as st st.write('Hello, world!')
如有可能,儘量格式化排版
小指令碼對檔案的處理可以通過 print 方式直接輸出,方便使用管道命令進一步處理
執行報錯時,直接對那段程式碼加一個異常捕捉 + IPDB 除錯,簡單高效
try: do_something_with_xxxError() except xxxError: import ipdb; ipdb.set_trace()
不要重複造輪子,也要注意把自己常用的程式碼片段收集整理
def split_chunks(data, n): if data is None: return None N = len(data) m = int(math.ceil(N / float(n))) res = [[] for i in range(n)] for i in range(n): res[i] = data[i*m: (i+1)*m] return res
多使用列表表示式,簡化常用程式碼。
with open(path) as f: lines = [l.strip() for l in f.readlines()]
可以允許單檔案指令碼較長,但不允許單函式又臭又長,理清邏輯,劃分為多個函式方便修改。
本作品採用《CC 協議》,轉載必須註明作者和本文連結