python不可变类型是什么

python

python中有可变对象和不可变对象,可变对象:list,dict.不可变对象有:int,string,float,tuple.

python不可变对象

int,string,float,tuple

先来看一个例子

def int_test(): 

    i = 77

    j = 77

    print(id(77))                  #140396579590760

    print('i id:' + str(id(i)))      #i id:140396579590760

    print('j id:' + str(id(j)))      #j id:140396579590760

    print i is j                    #True

    j = j + 1

    print('new i id:' + str(id(i)))  #new i id:140396579590760

    print('new j id:' + str(id(j)))  #new j id:140396579590736

    print i is j                    #False

if __name__ == '__main__':

    int_test()

有i和j俩个变量的值为77,通过打印77的ID和变量i,j在内存中的id我们得知它们都是指向同一块内存。所以说i和j都是指向同一个对象的。然后我们修改j的值,让j的值+1.按道理j修改之后应该i的值也发生改变的,因为它们都是指向的同一块内存,但结果是并没有。因为int类型是不可变类型,所有其实是j复制了一份到新的内存地址然后+1,然后j又指向了新的地址。所以j的内存id发生了变化。

内存分配情况如下:

推荐学习《python教程》

以上是 python不可变类型是什么 的全部内容, 来源链接: utcz.com/z/524789.html

回到顶部