Python对象的引用机制

python对象:

  1. python的设计哲学:一切皆对象,且均为引用——变量存储的均为对象的内存地址,而非数据

  2. 内存模型:

    栈内存(变量)     堆内存(对象)
    | a | 0x100 | ----> | [1, 2, 3, 4] |
    | b | 0x100 | --|

    对象由引用计数管理生命周期

  3. 引用——设计

    1. 内存与效率
    2. 避免数据拷贝
    3. 动态扩展性
  4. 对象是复杂的数据组织形式,动态的改变与状态的共享本来就是结构体设计的出发点,可以看到其他支持结构体或者对象等的语言也是支持引用的

    C语言的结构体默认是值传递,但可以通过指针实现引用传递。C++允许用户选择值传递、引用或指针。Java中的对象都是引用传递,基本类型是值传递。Go的结构体默认是值传递,但可以通过指针来引用传递

  5. python语言中一切皆对象以及动态绑定是统一的——all

  6. 不可变对象的特殊行为

    不可变对象的设计哲学

    1. 安全优先:通过禁止原地修改避免副作用。

    2. 内存优化:引用共享和驻留机制减少冗余。

    3. 逻辑简洁性:明确操作生成新对象,简化状态追踪。

    性能权衡

    • 优点:线程安全、哈希稳定、防御性编程。

    • 代价:频繁修改时可能产生临时对象(如字符串拼接),需依赖 GC 清理。

    • 适用场景

      • 高频读取、低频修改的数据(如配置、常量)。

      • 多线程共享数据。

      • 需要稳定哈希值的场景(如字典键)。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!