• Python基础:Python可变对象和不可变对象


    Python在heap中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容是可变的,例如list。而不可变的对象则相反,表示其内容不可变。

    • 不可变对象:int,string,float,tuple
    • 可变对象   :list,dictionary

    一、不可变对象

    由于Python中的变量存放的是对象引用,所以对于不可变对象而言,尽管对象本身不可变,但变量的对象引用是可变的。运用这样的机制,有时候会让人产生糊涂,似乎可变对象变化了。如下面的代码:

    Java代码  收藏代码
    1. i = 73  
    2. i += 2  


     

     

    从上面得知,不可变的对象的特征没有变,依然是不可变对象,变的只是创建了新对象,改变了变量的对象引用。

    看看下面的代码,更能体现这点的。

     

    Java代码  收藏代码
    1. #因为258int对象,是不可变对象的。所以下面3个id的值都是一样的,最后一句的结果也是为True  
    2. #有点奇怪的是为什么在IDLE,和在脚本执行的结果不太一样。所以下面的代码请在脚本中执行。  
    3.   
    4. print(id(258))  
    5. a = 258  
    6. print(id(a))  
    7. b = 258  
    8. print(id(b))  
    9. print(a is b)  

     

     

     

     

    二、对于可变对象

    其对象的内容是可以变化的。当对象的内容发生变化时,变量的对象引用是不会变化的。如下面的例子。

    Python代码  收藏代码
    1. m=[5,9]  
    2. m+=[6]  

     

     


  • 相关阅读:
    leetcode-9-basic-binary search
    selection problem-divide and conquer
    leetcode-8-pointer
    leetcode-7-hashTable
    前端学习之——js解析json数组
    Google浏览器如何加载本地文件
    JAVA全栈工程师应具备怎样的知识体系?
    Java全栈工程师知识体系介绍
    数据可视化工具
    使用js的FileReader对象
  • 原文地址:https://www.cnblogs.com/daichangya/p/12958506.html
Copyright © 2020-2023  润新知