跳转至

附录 · Java-Python 对照速查表

全书二十篇的浓缩卡片。建议收藏本页,前三个月你会反复回来查它。

一、基础语法

Java 8 Python 备注
System.out.println(x) print(x) 调试用;正式用 logging
String s = "a" + b f"{b}" f-string 是标准答案
if (x != null) if x is not None: 永远 is None,不写 == None
a == b(比身份) a == b(比内容) 身份比较用 is
int i = 0; i = 0 声明即初始化
final x = 1 无关键字 Python 靠约定,常量写 UPPER_CASE
public/private _name / __name 一个下划线=私有约定,两个=名字改写
a ? b : c b if a else c 条件表达式
switch (x) {...} match x: case ... 3.10+,实际很少用
三目运算链 x or y / x and y 短路求值,返回操作数本身

二、容器与推导式

Java 8 Python
new ArrayList<>() []
new HashMap<>() {}
new HashSet<>() set() / {1, 2}
List.of(a, b) (a, b) 元组 / [a, b]
list.get(i) lst[i](负索引从右数)
list.subList(1, 3) lst[1:3](切片)
str.substring(2, 5) s[2:5]
new StringBuilder(s).reverse() s[::-1]
for (int i...) for i, v in enumerate(lst):
两 List 配对 zip(a, b, strict=True)
stream().map().filter() [f(x) for x in it if cond]
stream().collect(toMap()) {k: v for k, v in items}
stream().collect(toSet()) {x for x in it}

三、函数与装饰器

Java 8 Python
Function<T,R> f = x -> x*2 f = lambda x: x * 2
匿名内部类(final 捕获) 闭包 + nonlocal 声明写入
Spring AOP @Around @decorator(函数套函数)
@Retryable(Spring Retry) @retry(max_attempts=3) 自己写
@Transactional with transaction():(上下文管理器)
Runnable 实例 函数本身 Thread(target=fn)
Lombok @Data @dataclass
record Point(int x, int y) @dataclass class Point:(默认可变)
Record 不可变 tuple / NamedTuple / frozen dataclass
try (var r = open()) with open(...) as f:
Consumer<T> 带状态实现 class X: + __call__(self, ...)(可调用对象,第 06 篇)
Iterable<T> / Iterator<T> __iter__ + __next__(for 只认这协议,第 05 篇)
Guava / 静态工具类 functools.partial(焊死前几个参数,第 04 篇)
工厂方法固定参数 partial(fn, model=..., temperature=...)
void method(){} + __slots__ 无对应 __slots__(海量小对象省内存,十万个省 61%,第 06 篇)

四、类型系统

Java 8 Python
interface X class X(Protocol):(结构式)
implements 什么都不写(鸭子类型)
List<String> list[str](3.9+ 小写泛型)
Optional<T> T | None
@Nullable String str | None
Function<T,R> Callable[[T], R]
泛型 <T extends X> TypeVar("T", bound=X)
javac 编译期检查 mypy 静态检查(命令: uv run mypy .)
instanceof isinstance(x, T)(Pythonic 代码少用)

五、并发

Java 8 Python
new Thread(...) threading.Thread(target=fn)
Executors.newFixedThreadPool(8) ThreadPoolExecutor(max_workers=8)
synchronized(obj) with threading.Lock():
volatile 无(asyncio 单线程无竞争)
CompletableFuture.allOf(...) await asyncio.gather(...)
supplyAsync(...) asyncio.to_thread(fn) / run_in_executor
NIO + Reactor asyncio 事件循环(同构思想)
ForkJoinPool multiprocessing.Pool
GIL 不存在(真并行) GIL:多线程 CPU 密集无效,IO 有效
CPU 密集 multiprocessing 多进程
IO 密集 多线程 / asyncio(AI 的主战场)

六、LLM/RAG 黑话翻译

LLM 圈黑话 你的旧相识
Chat Completions 协议 REST + JSON(OpenAI 兼容全行业)
token 计费/容量单位,中文≈1~1.5字/token
BPE 分词 前缀合并,学出高频碎片表
上下文窗口 128k 工作记忆容量(含 prompt+回答)
temperature / top_p 采样随机旋钮
system prompt 全局前置配置
few-shot 模板 + 示例
幻觉 过拟合输出,无 ground truth
embedding 向量 语义特征向量
余弦相似度 检索打分器
向量库(pgvector/Milvus) 带几何检索的索引
RAG 开卷考试(检索拼进 Prompt)
chunk / 分块 文档切片,512token+10%重叠
rerank 二段排序精排
function calling RPC:吐参数,本地执行回填
ReAct / Agent 规则引擎换成模型决策
LangGraph 轻量工作流引擎(Camunda 的 LLM 版)
checkpointer 流程实例持久化
LoRA 微调 外挂增强(AOP),教风格不教知识
vLLM 连续批处理 + 分页显存产线
TTFT / TPOT 首字延迟 / 每 token 间隔
prompt injection 检索内容劫持指令(RAG 头号威胁)

七、常用命令速查

# --- 环境(本书规范) ---
uv init                      # 建项目(自动虚拟环境)
uv add requests              # 加依赖
uv add --dev ruff pytest mypy  # 加开发工具
uv run python x.py           # 在虚拟环境里跑
uv run ruff check .          # 代码检查
uv run pytest                # 测试

# --- LLM 实战 ---
export DEEPSEEK_API_KEY=sk-xxx    # key 只进环境变量
uv add openai                     # OpenAI 兼容 SDK

# --- RAG 基建 ---
docker run -d --name rag-pg -e POSTGRES_PASSWORD=postgres \
  -p 5432:5432 pgvector/pgvector:pg16
uv add "psycopg[binary]"
-- SQL: CREATE EXTENSION vector; ALTER TABLE ... ADD COLUMN embedding vector(1024);
-- 检索: ORDER BY embedding <=> %s::vector LIMIT 5

# --- 本地部署 ---
ollama serve                  # 本地模型服务(:11434)
mlx_lm.server --model mlx-community/Qwen2.5-7B-Instruct-4bit --port 8080
vllm serve Qwen/Qwen2.5-7B-Instruct --max-model-len 8192    # Linux+GPU

# --- 微调 ---
mlx_lm.lora --model mlx-community/Qwen2.5-7B-Instruct-4bit --train --data ./data --iters 600
mlx_lm.fuse --model <基座> --adapter-path ./adapters/x --save-path ./models/fused

八、一份诚实的能力自检(转正前过一遍)

  • [ ] 不看书写出生成器 + 装饰器的骨架
  • [ ] 说得出 for x in obj 的两个协议方法,和 StopIteration 在哪一步发生
  • [ ] 给一个海量小对象类加过 __slots__,并说出它的代价
  • [ ] 跑通过带重试和流式的 LLM Client
  • [ ] pgvector 里建过库、灌过 chunk、写过检索 SQL
  • [ ] 有一张 50+ 条的评测集和通过率数字
  • [ ] 本地 Ollama/MLX 起过一个开源模型并用 OpenAI 协议调过
  • [ ] 简历里有一段带数字的 RAG/Agent 项目经历

六项全勾,你不再是“学过 Python 的 Java 工程师”,是 AI 应用工程师。


下一篇:附录 B · AI 信息可信度分级手册(返回 目录)——把书里的实验跑成你自己的项目,欢迎来仓库分享。