zoukankan      html  css  js  c++  java
  • Python可变类型 Vs 不可变类型

    可变类型 Vs 不可变类型(这里的可变不可变,是指内存中的那块内容(value)是否可以被改变。)

    • 可变类型(mutable):列表,字典
    • 不可变类型(unmutable):数字,字符串,元组
    • 如果是不可变类型,在对对象本身操作的时候,必须在内存中新申请一块区域(因为老区域#不可变#)。不允许变量的值发生变化,如果改变了变量的值,相当于新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量来引用这个对象,当引用计算变为0的时候,就启用垃圾回收机制,原来的地址就不再存在。
    • 如果是可变类型,对对象操作的时候,不需要再在其他地方申请内存,即地址不会发生变化,值可以变化。对于相同的值不同的对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多少份,这里不存在引用计数,是实实在在的对象。
    • 可以使用内建函数id()来确认对象的身份在两次赋值前后是否发生了变化。
  • 相关阅读:
    1022.游船出租
    1021.统计字符
    1020.最小长方形
    1017.还是畅通工程
    1019.简单计算器
    1015.还是A+B
    1014.排名
    1013.开门人和关门人
    1011.最大连续子序列
    1009.二叉搜索树
  • 原文地址:https://www.cnblogs.com/Lina-zhu/p/9024636.html
Copyright © 2011-2022 走看看