核心要点
能按数值/序列/映射/集合/布尔/二进制/None 分类列举
知道可变 vs 不可变类型及典型代表
理解 type() / isinstance() 的用法与区别
标准回答
Python 常用内置数据类型可按用途分组:
| 类别 | 类型 | 可变? |
|---|---|---|
| 数值 | int, float, complex, bool |
不可变 |
| 文本/序列 | str, bytes, bytearray |
str/bytes 不可变 |
| 容器 | list, tuple, dict, set, frozenset |
list/dict/set 可变 |
检测类型:type(x) 返回精确类型;isinstance(x, list) 支持继承判断,更推荐。
面试要点:bool 是 int 子类;None 是单例;可哈希类型才能作 dict 键(list 不行,tuple 内元素全不可哈希才行)。AI 工程中 NumPy ndarray、PyTorch Tensor 是扩展类型,不属于内置。延伸阅读:概率论基础 中也会用到数值与分布类型。
常见误区
⚠️ 常见踩坑
把 NumPy ndarray、PyTorch Tensor 当成内置类型——它们是第三方扩展类型。还有人忘了 bool 是 int 的子类,导致 'True == 1'、'sum([True, True])' 得到 2 这类「意外」。另外用 type(x) == int 判断类型会漏掉子类,更稳的是 isinstance(x, int)。
追问
追问 1:哪些内置类型可作为 dict 的键?
只有可哈希(hashable) 且不可变的对象:int、str、tuple(元素均需可哈希)、frozenset 等。list、dict、set 可变故不可哈希;自定义类默认可哈希(除非实现 eq 却不实现 hash)。
追问 2:int 在 Python 3 中有大小限制吗?
Python 3 的 int 是任意精度整数,仅受内存限制;不像 C/Java 有固定位宽。float 仍遵循 IEEE 754 双精度,超大整数转 float 可能丢精度。
追问 3:bytes 和 bytearray 有什么区别?
二者都存 0–255 字节序列;bytes 不可变,bytearray 可变。网络 I/O、文件二进制读写常用 bytes;需要原地修改缓冲区时用 bytearray。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
📰 AI 资讯
🛠️ AI 工具
- Pytorch
Meta 开源的深度学习框架,100K+ stars。以动态计算图和 Pythonic 风格著称,在学术界和工业界都有广泛应用,支持分布式训练、移动端部署和 ONNX 导出