zoukankan      html  css  js  c++  java
  • 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]  

     

     


  • 相关阅读:
    struts2的@Result annotation 如何添加params,并且在页面取值
    spring @Entity @Table
    @Results( 中 params 怎么用
    Java三种技术架构
    python 内存管理
    wxpyhon 鼠标事件例子
    常用wxPython事件描述
    wxpython 拖动界面时进入假死状态(未响应)解决方法
    python 的一些高级编程技巧
    python 访问器@property的使用方法
  • 原文地址:https://www.cnblogs.com/daichangya/p/12958506.html
Copyright © 2011-2022 走看看