Python内建对象分不可变(数值、字符串、元组)和可变(列表、字典、集合)两类,不可变对象支持哈希与线程安全,可变对象支持原地修改;None为单例空值,bool是int子类;所有值均为对象,类型本身也是type的实例,Python是强动态类型语言。

Python 的内建对象体系围绕几个核心类型构建,它们是语言运行和日常编程的基石。理解这些类型的行为、边界与设计意图,比单纯记忆语法更重要。
不可变对象:数值、字符串、元组
数值(int、float、complex)、str 和 tuple 是典型的不可变类型。一旦创建,其内容无法被修改——任何“改变”操作实际返回新对象。
- 比如 s = "hello"; s += " world" 并非修改原字符串,而是创建新字符串并让 s 指向它
- (1, 2) 中嵌套可变对象(如 ([1], 2))时,元组本身不可变,但其中列表仍可原地修改
- 不可变性带来线程安全和哈希支持——只有不可变对象才能作为字典键或集合元素
可变对象:列表、字典、集合
list、dict、set 支持就地修改,方法如 append()、update()、add() 不会新建对象,而是直接变更原对象的内部状态。
- 赋值语句(如 b = a)只是增加引用,修改 b 会影响 a ——这是浅拷贝行为的根源
- 需要独立副本时,用 a.copy()(列表/字典)、set(a)(集合),或导入 copy 模块处理嵌套结构
- 字典键必须不可变,但值可以是任意类型;集合元素也必须可哈希,因此不能包含列表或字典
None、布尔与空值语义
None 是单例对象,表示“无值”,不是 0、空字符串或 False;bool 类型只有 True 和 False 两个实例,所有对象都有真值(truthiness)判断规则。
立即学习“Python免费学习笔记(深入)”;
- 空容器([]、{}、set())、零值(0、0.0)、None 默认为 False;其余为 True
- 避免用 if x == None:,应写 if x is None: ——因为 is 判断身份,更准确且符合惯例
- bool 是 int 的子类:True == 1、False == 0 成立,可用于简单计数场景
类型本质:一切都是对象,一切都有类型
Python 中没有“原始类型”,所有值都是对象,每个对象都有唯一标识(id())、类型(type())和值。类型本身也是对象,由内置类(如 int、str)实例化而来。
-
type(42) 返回
,而 type(int) 是 ——说明 int 是元类 type 的实例 - 用 isinstance(x, (int, float)) 替代多重 type(x) == ... 判断,更灵活且支持继承
- 动态类型不等于弱类型:Python 强类型,不允许隐式转换,比如 "123" + 456 会报错,必须显式转换










