开发者社区 问答 正文

python不可变类型是什么

问题来源于python学习网

展开
收起
保持可爱mmm 2019-12-10 15:08:27 328 分享 版权
1 条回答
写回答
取消 提交回答
  • 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发生了变化。

    2019-12-10 15:08:42
    赞同 展开评论
问答分类:
问答地址: