Python 中文教程

速查表

写代码时忘了怎么写,来这里查。表格汇总自各章,右上角可以切换语言。

上手运行

运行模型对照
PythonJava说明
python3 app.pyjavac + javaJava 11 起也能用 java App.java 直接运行单个文件
CPython 解释器JVM
.pyc 字节码.classPython 自动放在 __pycache__/,不用手动管理
python3 交互模式jshell验证想法最快的方式

变量与基础类型

数字类型
PythonJava说明
intint / long / BigIntegerPython 只有一种,自动扩容
floatdoublePython 没有 32 位 float
True / Falsetrue / false首字母大写
Nonenull判断时用 is None
x ** yMath.pow(x, y)整数的非负整数次幂仍是整数
abs(x)、round(x, 2)Math.abs(x)内置函数,不用导入
常用字符串方法
PythonJava说明
s.strip()s.strip()
s.split(",")s.split(",")Java 返回数组,其余返回列表
",".join(xs)String.join(",", xs)Python 把方法放在分隔符上
s.replace("a", "b")s.replace("a", "b")
s.startswith("a")s.startsWith("a")Python 全小写
s.upper()s.toUpperCase()
"a" in ss.contains("a")
s.find("a")s.indexOf("a")找不到都返回 -1
int("42")Integer.parseInt("42")
str(42)String.valueOf(42)
ord("a")、chr(97)(int) 'a'、(char) 97字符和码点互转

控制流

控制流速查
PythonJava说明
elifelse if
and / or / not&& / || / !
x if c else yc ? x : y
for i in range(n)for (int i = 0; i < n; i++)
enumerate(xs)下标循环
zip(a, b)下标循环
x not in xs!xs.contains(x)
pass{}
match / caseswitch
循环的 else标志变量

函数

命名与风格
PythonJava说明
snake_casecamelCase函数和变量
PascalCasePascalCase类名
UPPER_CASEUPPER_CASE常量
snake_case.pyPascalCase.java文件名
selfthisPython 要显式写在参数里
_internalprivatePython 只是约定
每行不超过 79 字符100 到 120 字符很多团队会放宽到 88 或 120

数据结构

容器类型
PythonJava说明
list:[1, 2]ArrayList有序、可变
tuple:(1, 2)record / List.of有序、不可变
set:{1, 2}HashSet无序、元素唯一
dict:{"a": 1}LinkedHashMap键值对,保持插入顺序
collections.dequeArrayDeque双端队列
列表操作
PythonJava说明
xs.append(x)xs.add(x)加到末尾
xs.extend(ys)xs.addAll(ys)合并另一个列表
xs.insert(i, x)xs.add(i, x)
xs.remove(x)xs.remove(x)Python 找不到时抛 ValueError
xs.pop()xs.removeLast()删除并返回末尾元素,Java 21 起可用
xs.pop(0)xs.remove(0)按下标删除
xs.index(x)xs.indexOf(x)Python 找不到时抛异常,而不是返回 -1
xs.sort()Collections.sort(xs)原地排序
sorted(xs)xs.stream().sorted()返回新列表
xs.reverse()Collections.reverse(xs)原地反转
xs.count(x)Collections.frequency(xs, x)统计出现次数
xs.copy()new ArrayList<>(xs)浅拷贝
xs.clear()xs.clear()清空
del xs[0]xs.remove(0)del 也能删切片:del xs[1:3]
常用内置函数
PythonJava说明
for k, v in d.items()d.forEach((k, v) -> ...)同时遍历键和值
sum(xs)stream.mapToInt(i -> i).sum()
min(xs) / max(xs)Collections.min(xs)
any(x > 0 for x in xs)stream.anyMatch(...)
all(x > 0 for x in xs)stream.allMatch(...)
reversed(xs)xs.reversed()Python 返回迭代器,Java 21 起可用
sorted(xs, key=f)stream.sorted(cmp)

模块与包

模块系统对照
PythonJava说明
模块(.py 文件)类文件Python 的最小导入单位是文件
包(目录)package
sys.pathclasspath
__init__.py无包初始化代码
__all__publicPython 里只影响 import *
_nameprivate / 包私有约定,不强制

错误与异常

常见异常对照
PythonJava说明
BaseExceptionThrowable根类
ExceptionException应用代码捕获到这一层为止
ValueErrorIllegalArgumentException值不合法
TypeErrorClassCastException类型不对
KeyError无(get 返回 null)字典键不存在
IndexErrorIndexOutOfBoundsException下标越界
ZeroDivisionErrorArithmeticExceptionPython 里浮点数除以零也会抛这个异常
NameError编译错误名字写错,运行到那一行才发现
ModuleNotFoundErrorClassNotFoundExceptionImportError 的子类
AttributeErrorNullPointerException常见于访问 None 的属性
FileNotFoundErrorFileNotFoundException
NotImplementedErrorUnsupportedOperationException未实现的抽象方法
KeyboardInterrupt、SystemExit无继承 BaseException,所以 except Exception 拦不住 Ctrl-C 和 sys.exit()

类

特殊方法对照
PythonJava说明
__str__toString()print 和 str() 时调用
__repr__无调试用的字符串,交互模式显示的就是它
__eq__equals()== 时调用
__hash__hashCode()重写 __eq__ 时要一起处理
__lt__compareTo()< 时调用,用于排序
__add__无+ 时调用
__len__size()len() 时调用
__getitem__get(i)obj[i] 时调用
__iter__iterator()for 循环时调用
__call__函数式接口让对象能像函数一样调用
__enter__ / __exit__AutoCloseablewith 时调用

输入输出

格式说明符
PythonJava说明
f"{x:.2f}""%.2f"保留两位小数
f"{x:>8}""%8s"右对齐
f"{x:<8}""%-8s"左对齐
f"{x:08.3f}""%08.3f"用 0 补齐
f"{x:,}""%,d"千分位
f"{x:.1%}"无百分比,0.25 显示为 25.0%
f"{x:x}""%x"十六进制
f"{x!r}"无用 repr() 而不是 str()
文件操作
PythonJava说明
open(p)Files.newBufferedReader(p)默认只读文本模式
open(p, "w")Files.newBufferedWriter(p)覆盖写入
open(p, "a")Files.writeString(p, s, APPEND)追加写入
open(p, "x")Files.writeString(p, s, CREATE_NEW)文件已存在时报错
open(p, "rb")Files.newInputStream(p)二进制模式
f.read()Files.readString(p)读取全部
f.readlines()Files.readAllLines(p)读成行列表
Path(p).read_text()Files.readString(p)一行读完,不用 with

标准库巡礼

按需求找模块
PythonJava说明
pathlib、os、shutiljava.nio.file路径和文件操作
subprocessProcessBuilder运行外部命令
tempfileFiles.createTempFile临时文件
globFiles.newDirectoryStream通配符查找文件
sys、argparseargs、picocli命令行程序
rejava.util.regex正则表达式
math、random、statisticsMath、Random数学和随机数
datetimejava.time日期时间
timeSystem.currentTimeMillis、Thread.sleep时间戳和休眠
collectionsjava.utildeque、Counter、defaultdict
itertools、functoolsStream APIchain、groupby、lru_cache、partial
threading、concurrent.futuresjava.util.concurrent多线程
multiprocessing无多进程,绕开 GIL
asyncioCompletableFuture异步 I/O
loggingSLF4J日志
decimal、fractionsBigDecimal精确计算
unittest、doctestJUnit测试
urllib.requestjava.net.httpHTTP 请求,实际项目多用第三方库 requests
sqlite3JDBC + 驱动Python 内置了 SQLite
hashlib、base64、uuidMessageDigest、Base64、UUID摘要、编码和唯一 ID

虚拟环境与依赖

工具对照
PythonJava说明
pipMavenPython 这边只管安装
PyPIMaven Central公共仓库
requirements.txtpom.xml 的依赖部分
pyproject.tomlpom.xml项目元数据和构建配置
.venv/类路径项目的依赖隔离
.whl 文件.jar分发格式
pip freezemvn dependency:list查看实际版本
生态对照
PythonJava说明
FastAPISpring BootWeb 接口
DjangoSpring MVC + JPA全功能 Web 框架
SQLAlchemyHibernateORM
pydanticBean Validation + Jackson数据校验和序列化
pytestJUnit测试
asyncioCompletableFuture异步编程
ruffCheckstyle、Spotless代码检查和格式化
mypy、pyrightjavac类型检查
pandas、NumPyTablesaw数据分析
PyTorchDJL机器学习