可变数据类型和不可变数据类型
一、什么是可变数据类型和不可变数据类型
可变数据类型:value值改变,id值不变;
不可变数据类型:value值改变,id值(内存地址)也随之改变。
也就是税:
可变对象是指,一个对象在不改变其所指向的地址的前提下,可以修改其所指向的地址中的值;
不可变对象是指,一个对象所指向的地址上值是不能修改的,如果你修改了这个对象的值,那么它指向的地址就改变了,相当于你把这个对象指向的值复制出来一份,然后做了修改后存到另一个地址上了。
二、如何确定一种数据类型是可变的还是不可变的
根据可变数据类型与不可变数据类型的概念,只需要在改变value值的同时,使用id()函数查看变量id值是否变化就可以知道这种数据类型是可变的还是不可变的了。
三、可变数据类型和不可变数据类型都有什么
不可变数据类型:布尔值、字符串、数值型、元组等
可变数据类型:列表、字典
举例:
四、不可变数据类型有什么好处
不可变类型有什么好处?如果数据是不可变类型,当我们把数据传给一个不了解的API时,可以确保我们的数据不会被修改。如果我们要操作一个从函数返回的元组,可以通过内建函数list()把它转换成一个列表。(列表和元组的区别之一)
深浅拷贝是什么
浅拷贝是新创建了一个跟原对象一样的类型,但是其内容是对原对象元素的引用。这个拷贝的对象本身是新的,但内容不是。拷贝序列类型对象(列表/元组)时,默认是浅拷贝。
深拷贝,在内存中将所有的数据重新创建一份
深浅拷贝的实现
深浅拷贝的区别
可变数据的浅拷贝
不可变数据类型的浅拷贝和深拷贝
浅拷贝:它的内外都相同(内存地址)拷贝实际上是对原始对象的引用
深拷贝:内外层都不相同
深拷贝
总结(赋值、浅拷贝和深拷贝的区别)
补充:
浅拷贝的用处,用来创建联合账号