PyPyBridge

从 go 工具链到 Python 工具链

go mod → uv,gofmt → ruff format,go run → uv run。

10 分钟 · 右栏代码可点击「运行」


GoPython备注
go mod inituv initpyproject.toml ≈ go.mod
go getuv adduv.lock 锁定依赖
go run main.gouv run python main.py解释执行,无编译产物
gofmtruff format统一风格,无 formatter 圣战
go vetruff checklint 一体化
go testpytest测试即普通函数 + assert
go build(单二进制)无原生等价物分发靠环境或 PyInstaller

Hello CLI 的两个世界

Go
1package main
2
3import "fmt"
4
5func main() {
6 fmt.Println("hello")
7}
8// go run main.go
Python
1# hello.py — 没有 package 声明,没有 func main
2print("hello")
3
4# uv run python hello.py
5# 或直接: python hello.py
  • 脚本小于 100 行时 Python 甚至可以加 PEP 723 内联元数据,uv run 单文件自动建环境 —— 单二进制分发的最佳替代体验。

TIP

类型系统差异Go 是静态强类型 + 编译期检查;Python 是动态强类型 + 可选标注。加上 pyright + mypy 与类型标注后,能得到接近 Go 的静态保障,代价是标注不是强制生效的。

练一练

这张卡的示例代码已在游乐场中备好,改一改再运行。

在游乐场中打开