zoukankan      html  css  js  c++  java
  • python可变类型与不可变类型

    可变类型有dict,list,不可变类型有int,float,string,tuple。

    不可变:
    1、int
    int是不可变类型,在数值比较小的时候[-5, 256],被定义在了这个对象池里,引用时会自动引用整数对象池里的对象,内存位置不变

    数值比较大时,情况就不同了,会为int对象分配新的内存地址

    当改变int数值时,其实是创建了一个新对象,如果a = a+100,a已经不再指向原内存了,原来的100因为没有引用会被回收

    2、float
    float会为每个值都创建新的对象,不管值一样还是数值操作,但是原值不会变,只是不再被引用

    3、string

    3、string
    string有一个intern机制,不带空格的单词会触发intern机制,将其放入缓存池,方便后续查找

     

    有空格则不会触发intern机制

    4、tuple
    tuple没有缓存池机制,每次都会创建一个新对象

    但是tuple不可变似乎在某些时候会有疑问

    这是为什么呢,其实tuple本身并没有变化,每个元素指向的内存都没变化,变化的是指向的list,而list本身就是可变的,这并不影响tuple的不可变属性。

    可变

    1、dict

     dict是可变类型,这个可变是指,指向的固定内存的值可以被改变而内存不变,但是因为没有缓存机制,所以,同样的值赋给不同的变量还是创建两个对象,指向不同的地址

    2、list

    list也是可变类型,通过append等方法可以修改指向的固定地址内的值

  • 相关阅读:
    一个基础的CURL类
    设计自适应网页方法
    JQ点击列表显示隐藏
    获取当前页面的完整URL
    配置时间生成下拉菜单
    Contains Duplicate II
    Rectangle Area
    面试题47:不用加减乘除做加法
    面试题48:用C++设计一个不能被继承的类
    Reverse Linked List
  • 原文地址:https://www.cnblogs.com/small-office/p/9376324.html
Copyright © 2011-2022 走看看