1. 核心主题:Python 变量模型与 C 语言变量模型核心差异
- Python 采用“对象绑定模型”,C 语言采用“内存存储模型”
- 核心逻辑差异:Python 中变量是对象的“引用标识符”,不直接存储数据;C 语言中变量是“内存地址的别名”,直接对应一块固定大小的内存空间
2. 赋值的底层逻辑
2.1 操作 1:a = 10 发生的过程
- Python 解释器首先检查内存中是否已存在整数对象
10;
- 若已存在,则直接获取该对象的引用;若不存在,则构造新的整数对象
10;
- 将变量
a 与该整数对象 10 进行绑定,即变量 a 指向该对象的内存地址。
2.2 操作 2:b = a 发生的过程
- 不进行内存拷贝,也不创建新对象;
- 将变量
b 与变量 a 当前所绑定的对象进行重绑定;
- 最终结果:变量
a 和 b 同时指向同一个整数对象 10。
3. 核心学习原则(补充强化)
- 首要原则:对于暂未掌握的知识点,可以不会,但绝对不能学错;
- 关键提醒:避免将 C 语言变量模型的认知“迁移”到 Python 中,防止产生“知识负迁移”(如误认为 Python 变量是内存容器)。
4. Python 中可变类型对象与不可变类型对象的核心定义
4.1 定义前提
- 可变/不可变的判断标准是对象的内容,而非变量本身;
- 重要补充:变量永远是“可修改的”,变量的修改本质是“解除原对象绑定,重新绑定新对象”。
4.2 不可变类型对象
- 核心特征:对象的内容无法直接修改,修改操作会触发两种结果:
- 重新构建新对象(如数字
int、字符串 str:a=10 后 a=a+1,会创建新整数对象 11,a 重新绑定新对象);
- 直接报错(如元组
tuple:t=(1,2) 后 t[0]=3,会抛出 TypeError 错误);
- 常见示例:数字(
int、float)、字符串(str)、元组(tuple)。
4.3 可变类型对象
- 核心特征:对象的内容可直接进行增、删、改操作,无需重建新对象;
- 常见示例:列表(
list:如 l=[1,2] 后 l.append(3),直接修改原列表内容)、字典(dict:如 d={'a':1} 后 d['b']=2,直接新增键值对)、集合(set:如 s={1,2} 后 s.add(3),直接扩展集合元素)。
5. Python 中浅拷贝与深拷贝的差异
5.1 共同特点
- 两种拷贝方式均会对对象的“表层结构”进行拷贝,生成新的表层对象。
5.2 核心区别
- 浅拷贝:仅拷贝表层结构,不拷贝深层嵌套结构(如嵌套列表
l=[1, [2,3]],浅拷贝后新列表的表层元素 1 是新引用,但深层列表 [2,3] 仍与原对象共享引用);
- 深拷贝:会完整拷贝对象的“所有层级结构”(包括表层和深层嵌套结构,如上述嵌套列表深拷贝后,深层列表
[2,3] 也会生成新对象,与原对象完全独立)。
6. Python 中不可变类型与可哈希性的关联
6.1 核心关联规则
- 基本规律:不可变类型的对象通常具备可哈希性;
- 关键补充:若对象存在深层嵌套结构(如元组
t=(1, [2,3])),需保证“深层结构也不可变”,该对象才具备可哈希性(上述元组因包含可变的列表 [2,3],故不可哈希)。
6.2 应用场景
- 可哈希对象可作为字典的“键”(如
d={1:'a', 'b':2},键 1 和 'b' 均为可哈希对象);
- 可哈希对象可作为集合的“元素”(如
s={1, 'a'},元素 1 和 'a' 均为可哈希对象);
- 核心作用:可哈希性是实现字典、集合“快速检索”(如基于哈希表的查找)的基础。
7. Python 四大容器的基础操作(入门了解,可暂不深入)
7.1 涉及容器
- 列表(
list)、字典(dict)、集合(set)、元组(tuple)。
7.2 操作范围
- 基础增、删、改、查操作,及各容器特有的常用方法(如列表
append()、字典 keys()、集合 union() 等),仅作简单了解即可。
8. Python 列表解析式(入门了解,可暂不深入)
- 核心定位:快速生成列表的简洁语法;
- 学习建议:简单查看 2-3 个基础示例(如
[x*2 for x in range(5)]),了解语法格式即可,暂无需深入复杂用法。
9. Python 生成器解析式(入门了解,可暂不深入)
9.1 核心优势
- 相比列表解析式,生成器解析式不直接生成完整列表,而是返回生成器对象,更节省内存(按需生成元素,而非一次性加载所有元素)。
9.2 学习建议
- 简单查看 2-3 个基础示例(如
(x*2 for x in range(5))),了解语法格式(与列表解析式的区别是用圆括号)即可,暂无需深入复杂用法。
10. Python 可迭代对象、迭代器、生成器的层级关系(入门了解,可暂不深入)
- 核心层级:可迭代对象 ⊇ 迭代器 ⊇ 生成器;
- 关系解释:生成器是特殊的迭代器,迭代器是特殊的可迭代对象;
- 学习建议:仅需明确三者的包含关系,暂无需深入各自的底层实现与复杂用法。
posted @
2025-11-12 11:43
wangya216
阅读(
10)
评论()
收藏
举报