zoukankan      html  css  js  c++  java
  • python 可变对象和不可变对象

    不可变对象,该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。

    可变对象,该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后,实际上是其所指的值直接发生改变,并没有发生复制行为,也没有开辟新的地址,通俗点说就是原地改变

    python中,int,float,string,tuple,bytes为不可变对象,set,list,dict为可变对象。

    int:

    1 >>> a = 10
    2 >>> id(a)
    3 140289936218048
    4 >>> a = a + 1
    5 >>> id(a)
    6 140289936218024
    View Code

    float:

    1 >>> a = 10.55
    2 >>> id(a)
    3 140289936226024
    4 >>> a = a + 1.5
    5 >>> id(a)
    6 140289936226000
    View Code

    string:

    1 >>> a = 'abc'
    2 >>> id(a)
    3 4356135112
    4 >>> a = a + 'd'
    5 >>> id(a)
    6 4357016240
    View Code

    tuple:

    1 >>> a = (1, 2, 3)
    2 >>> id(a)
    3 4356913584
    4 >>> a = (4, 5, 6)
    5 >>> id(a)
    6 4356799536
    View Code

    bytes:

    1 >>> a = b'abc'
    2 >>> id(a)
    3 4356135112
    4 >>> a = a + 'def'
    5 >>> id(a)
    6 4357016288
    View Code

    set:

    1 >>> a = set([1, 2, 3])
    2 >>> id(a)
    3 4356754224
    4 >>> a.add(4)
    5 >>> id(a)
    6 4356754224
    View Code

    list:

    1 >>> a = [1, 2, 3]
    2 >>> id(a)
    3 4356905656
    4 >>> a.append(4)
    5 >>> id(a)
    6 4356905656
    View Code

    dict:

    1 >>> a = {'one': 1, 'two': 2}
    2 >>> id(a)
    3 4357024576
    4 >>> a['three'] = 3
    5 >>> id(a)
    6 4357024576
    View Code
  • 相关阅读:
    谷歌推开发者培训指南 欲提升Android软件质量
    装饰者模式【java版】
    Java GetBytes 编码方式
    为什么程序员都是夜猫子
    Android的Handler总结
    常见的自然法则及管理启示
    java常用设计模式
    Android optionsmenu例程
    关于程序员成长的一点思考
    Java 字节流读写文件
  • 原文地址:https://www.cnblogs.com/gundan/p/8046655.html
Copyright © 2011-2022 走看看