主题
数据类型
Python 的对象有类型,变量没有固定类型。判断类型优先使用 isinstance();只有调试或框架边界检查时才使用 type()。
py
assert isinstance(42, int)
assert isinstance(True, bool)
assert isinstance(True, int) # bool 是 int 的子类,需注意此关系常用内置类型
| 类型 | 特点 | 常见用途 |
|---|---|---|
int、float、bool、None | 基础值 | 计数、计算、状态、缺失值 |
str、bytes | 不可变文本/字节序列 | 文本、编码数据 |
list | 有序、可变 | 保持顺序的集合 |
tuple | 有序、不可变 | 固定结构、可作字典键的值 |
dict | 键值映射,保留插入顺序 | 结构化数据、索引 |
set、frozenset | 元素唯一 | 去重、成员关系、集合运算 |
list、dict、set 可变;str、tuple、frozenset 不可变。不要把可变对象作为函数默认值。
序列、切片与解包
py
name = "Python"
assert name[0] == "P"
assert name[-2:] == "on"
assert name[:2] + name[2:] == name
first, *middle, last = [1, 2, 3, 4]
assert (first, middle, last) == (1, [2, 3], 4)切片上界不包含在结果中。切片通常会创建新序列;普通赋值不会复制对象。
字典、集合与推导式
py
user = {"id": 1, "name": "Ada"}
user["email"] = "ada@example.com"
unique_names = {"Ada", "Guido", "Ada"}
squares = {number: number**2 for number in range(5)}访问可缺失字典项使用 mapping.get("key") 或显式处理 KeyError,避免以 or 代替缺失判断,因为 0、空字符串和空集合也是假值。
比较、相等与格式化
==比较值;is比较对象身份。仅用is None判断None。and、or返回操作数,不一定返回布尔值;需要布尔结果时使用bool()。- 字符串格式化优先使用 f-string。
py
price = 12.5
message = f"价格:{price:.2f}"
assert message == "价格:12.50"金额等精确十进制计算使用 decimal.Decimal,不要使用 float。
