核心要点

  • 能按数值/序列/映射/集合/布尔/二进制/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) 支持继承判断,更推荐。

面试要点boolint 子类;None 是单例;可哈希类型才能作 dict 键(list 不行,tuple 内元素全不可哈希才行)。AI 工程中 NumPy ndarrayPyTorch 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)。

追问 2int 在 Python 3 中有大小限制吗?

Python 3 的 int 是任意精度整数,仅受内存限制;不像 C/Java 有固定位宽。float 仍遵循 IEEE 754 双精度,超大整数转 float 可能丢精度。

追问 3bytes 和 bytearray 有什么区别?

二者都存 0–255 字节序列;bytes 不可变,bytearray 可变。网络 I/O、文件二进制读写常用 bytes;需要原地修改缓冲区时用 bytearray。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。