码迷,mamicode.com
首页 > 编程语言 > 详细

【Python】可变对象和不可变对象

时间:2014-05-13 20:07:37      阅读:481      评论:0      收藏:0      [点我收藏+]

标签:style   blog   c   color   http   int   

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

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

一、不可变对象

由于Python中的变量存放的是对象引用,所以对于不可变对象而言,尽管对象本身不可变,但变量的对象引用是可变的。

bubuko.com,布布扣

bubuko.com,布布扣

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

bubuko.com,布布扣

输出:

       bubuko.com,布布扣

二、可变对象

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

bubuko.com,布布扣

bubuko.com,布布扣

三、函数参数

     Python函数参数对于可变参数,函数内对参数的改变会影响到原始对象,对不可变参数,函数内对参数的改变不会影响到原始参数

bubuko.com,布布扣

   输出结果:

bubuko.com,布布扣

总结:

      函数通过引用调用,只有可变对象函数内对参数的改变会影响到原始的对象,对于不可变对象来说,函数内对

参数的改变,不会影响到原始的对象,具体原因:

      1、可变对象,参数图,改变的是可变对象

bubuko.com,布布扣

    

       2、不可变对象,改变的是函数内变量的指向对象

  bubuko.com,布布扣

 

【Python】可变对象和不可变对象,布布扣,bubuko.com

【Python】可变对象和不可变对象

标签:style   blog   c   color   http   int   

原文地址:http://www.cnblogs.com/luosongchao/p/3724194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!