可变对象和不可变对象

可变对象和不可变对象

1、变量的定义

  • 变量指向某个对象那个的引用

2、可变对象

  • 可变对象是指内容可以修改的对象

3、 不可变对象

  • 不可变对象是指内容不可以修改的对象
  • 不可变对象的修改 实际上是这个对象指向了另外的对象

  就比如一个整数原先等于10   后改成11   这种修改并不是把原先的10修改了   而是又指向了另外一个对象11

  

可变对象只有  列表、字典、集合

不可变对象有   元组 、整数、小数、字符串

原文地址:https://www.cnblogs.com/whm1012/p/8453402.html

时间: 2024-10-17 01:35:50

可变对象和不可变对象的相关文章

Python中的可变对象和不可变对象

本文和大家分享的主要是python中可变对象与不可变对象相关内容,一起来看看吧,希望对大家学习python有所帮助. 什么是可变/不可变对象 · 不可变对象,该对象所指向的内存中的值不能被改变. 当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址. · 可变对象,该对象所指向的内存中的值可以被改变. 变量(准确的说是引用)改变后,实际上是其所指的值直接发生改变,并没有发生复制行为,也没有开辟新的出地址,通俗点说就是 原地改

Java基础知识强化101:Java 中的 String对象真的不可变吗 ?

1. 什么是不可变对象?       众所周知, 在Java中, String类是不可变的.那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的. 不能改变状态的意思是:不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变. 2. 区分对象和对象的引用 对于Java初学者, 对于String是不可变对象总是存有疑惑.看下面代码: 1 String s =

Objective-C:OC内部可变对象和不可变对象的深(复制)拷贝问题思考:

OC内部:可变对象和不可变对象的深(复制)拷贝问题思考: 不可变对象: 例如NSString对象,因为NSString对象是常量字符串,所以,不可以更改其内容,但是可以修改指向该字符串的指针指向.当对NSString对象做深拷贝时,如果是copy复制方式,其实就是浅复制,只是复制了同一个对象的指针:如果是mutableCopy复制方式,系统会分配一个新的内存空间用来存放复制出来的NSMutableString对象,此时地址是新的,内容是一样的,他们正在被不同的实例变量字符串指针指着. 可变对象:

Python 可变对象和不可变对象

具体可以看这里:http://thomaschen2011.iteye.com/blog/1441254 不可变对象:int,string,float,tuple 可变对象   :list,dictionary 可变对象和不可变对象在 python 中,如字面意思一样,可变对象一旦创建之后还可改变但是地址不会发生改变,即该变量指向的还是原来的对象.而不可变对象则相反,创建之后不能更改,如果更改则变量会指向一个新的对象. 举个栗子: >>> s = 'abc' # 不可变对象 >&g

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

Python在heap中分配的对象分成两类:可变对象和不可变对象.所谓可变对象是指,对象的内容是可变的,例如list.而不可变的对象则相反,表示其内容不可变. 不可变对象:int,string,float,tuple 可变对象   :list,dictionary 对于全局变量来说,可变对象和不可变对象有很大的不同. 一.不可变对象 由于Python中的变量存放的是对象引用,所以对于不可变对象而言,尽管对象本身不可变,但变量的对象引用是可变的.运用这样的机制,有时候会让人产生糊涂,似乎可变对象变

可变对象与不可变对象

1.什么是可变对象? 属性变更时不新建对象的对象,如StringBuiler,可以将其中存储的字符串看作属性,调用StringBuilder.append(String str)追加字符串时,是在已有StringBuilder对象的基础上进行的,没有新建对象. 基本数据类型的包装类以及String类以外的几乎全部类的对象都是可变对象. 2.什么是不可变对象? 属性变更时必须新建对象的对象,如String,已有"String str='abc'",再次赋值"str='efg'&

“不可变的对象”与“不可变的对象引用”

什么是不可变的对象呢?我们都知道String是不可变的,如果有涉及大量的字符串拼接我们最好不要用String,虽然我们在代码中可以这样写: String str = "test"; str = "test1"; 这样写是没有错的,这是不是和我们所说的String类型时不可变的违背了呢?其实不然,我们这里看到str"改变"了值,其实不是不是真正改变了,而是改变了str的引用.我们从下图可以看到当定义String str = "test1&

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

Python在heap中分配的对象分成两类:可变对象和不可变对象.所谓可变对象是指,对象的内容是可变的,例如list.而不可变的对象则相反,表示其内容不可变. 不可变对象:int,string,float,tuple 可变对象   :list,dictionary 一.不可变对象 由于Python中的变量存放的是对象引用,所以对于不可变对象而言,尽管对象本身不可变,但变量的对象引用是可变的. 从上面得知,不可变的对象的特征没有变,依然是不可变对象,变的只是创建了新对象,改变了变量的对象引用. 输

Python坑系列:可变对象与不可变对象

在之前的文章 http://www.cnblogs.com/bitpeng/p/4748148.html 中,大家看到了ret.append(path) 和ret.append(path[:])的巨大差别.这和Python的对象机制有关.现在谈谈这个问题! 我们知道,Python有可变对象和不可变对象,他们的表现行为也迥然不同.先来几个简单的问题: 1 def foo1(arg): 2 arg = 5 3 print(arg) 4 5 x = 1 6 foo(x) # 输出5 7 print(x

【转】Python中的可变对象和不可变对象

python在heap中分配的对象分成两类:可变对象和不可变对象.所谓可变对象是指,对象的内容是可变的,例如list.而不可变的对象则相反,表示其内容不可变. 不可变(immutable):int.字符串(string).float.(数值型number).元组(tuple) 可变(mutable):字典型(dictionary).列表型(list), set 一.不可变对象 由于Python中的变量存放的是对象引用,所以对于不可变对象而言,尽管对象本身不可变,但变量的对象引用是可变的.运用这样