Python对象的引用机制
python对象:
python的设计哲学:一切皆对象,且均为引用——变量存储的均为对象的内存地址,而非数据
内存模型:
栈内存(变量) 堆内存(对象) | a | 0x100 | ----> | [1, 2, 3, 4] | | b | 0x100 | --|
对象由引用计数管理生命周期
引用——设计
- 内存与效率
- 避免数据拷贝
- 动态扩展性
对象是复杂的数据组织形式,动态的改变与状态的共享本来就是结构体设计的出发点,可以看到其他支持结构体或者对象等的语言也是支持引用的
C语言的结构体默认是值传递,但可以通过指针实现引用传递。C++允许用户选择值传递、引用或指针。Java中的对象都是引用传递,基本类型是值传递。Go的结构体默认是值传递,但可以通过指针来引用传递
python语言中一切皆对象以及动态绑定是统一的——all
不可变对象的特殊行为
不可变对象的设计哲学
安全优先:通过禁止原地修改避免副作用。
内存优化:引用共享和驻留机制减少冗余。
逻辑简洁性:明确操作生成新对象,简化状态追踪。
性能权衡
优点:线程安全、哈希稳定、防御性编程。
代价:频繁修改时可能产生临时对象(如字符串拼接),需依赖 GC 清理。
适用场景
高频读取、低频修改的数据(如配置、常量)。
多线程共享数据。
需要稳定哈希值的场景(如字典键)。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: