Python 很适合写脚本、数据处理、小工具和服务胶水代码。语法简单并不代表可以随便写,尤其是对象、字典、JSON 和文件读写混在一起时,边界不清楚很容易留下隐患。
这篇从工程角度整理几个基础点:脚本入口、数据结构、序列化和错误处理。
脚本入口要清楚
Python 文件既可以被直接执行,也可以被别的模块导入。建议为可执行脚本保留入口:
def main():
print("run task")
if __name__ == "__main__":
main()
这样做的好处是:导入模块时不会自动执行任务,测试也更容易写。脚本越长,越应该把核心逻辑拆成函数,而不是全部堆在文件顶层。
字典适合传输,不适合表达所有业务
Python 的 dict 很方便,JSON 也天然像字典。但如果业务字段越来越多,只靠字典会变得难维护。
例如:
user = {
"id": 1001,
"name": "zhao",
"enabled": True,
}
简单脚本可以这样写。复杂一点的逻辑,建议用 dataclass 或明确的模型对象表达结构:
from dataclasses import dataclass
@dataclass
class User:
id: int
name: str
enabled: bool
这样字段更清楚,也方便类型检查和测试。
JSON 序列化要处理类型边界
Python 常用 json.dumps 和 json.loads 处理 JSON:
import json
text = json.dumps({"name": "zhao"}, ensure_ascii=False)
data = json.loads(text)
需要注意:不是所有 Python 对象都能直接转 JSON。比如日期、Decimal、自定义对象,都需要先转换成 JSON 支持的字符串、数字、布尔值、列表或字典。
如果写接口、配置或审计日志,最好显式处理这些类型,不要等运行时报 Object of type ... is not JSON serializable。
文件读写要指定编码
处理中文内容时,文件读写建议明确编码:
from pathlib import Path
path = Path("note.md")
text = path.read_text(encoding="utf-8")
path.write_text(text, encoding="utf-8")
不要依赖系统默认编码。跨机器、跨系统运行时,默认编码差异会让问题很难复现。
实用结论
Python 写小工具很快,但要长期可维护,仍然需要清晰结构:脚本有入口,业务有模型,JSON 有类型边界,文件读写有编码。
这些习惯不复杂,却能避免很多后期排障。尤其是当脚本从“一次性工具”变成“每天都跑的任务”时,清晰边界比省几行代码更重要。




