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等方法可以修改指向的固定地址内的值

  • 相关阅读:
    etherlime-1-Quick Start
    etherlime-4-Etherlime CLI
    Sequelize-nodejs-2-basic usage
    Sequelize-nodejs-6-Instances
    Sequelize-nodejs-5-Querying
    Sequelize-nodejs-4-Model usage
    Sequelize-nodejs-3-model definition
    eclipse快捷键大全
    java第一课
    java程序员认证考试题库
  • 原文地址:https://www.cnblogs.com/small-office/p/9376324.html
Copyright © 2011-2022 走看看