可变类型与不可变类型的作用和意义
Python中的变量分为可变类型和不可变类型 两种。
可变类型: 数字、字符串、元组、可变集合。
不可变类型: 列表、字典、不可变集合。
这里的可变不可变,是指内存中的那块内容(value)是否可以被改变
所谓可变类型与不可变类型是指:数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变。
根据存储的内容是否可变划分为可变类型与不可变类型。如果是不可变类型,在对对象本身操作的时候,必须在内存中新申请
一块区域(因为老区域是不可变)。如果是可变类型,对对象操作的时候,不需要再在其他地方申请内存,只需要在此对象后面连
续申请(+/-)即可,也就是它的address空间地址会保持不变,但区域会变长或者变短。
通过id(变量名) 来查看变量的空间地址是否发生变化。
python中所声明的变量都以对象的形式存在,存在于机器的固定内存之中。可以理解为变量名为对象的指针。
在python中设置的垃圾回收机制采用的是引用计数机制来实现,就是通过使用计数器的方式来判断空间的引用情况,当计
数器为0时则会将内存回收。例如声明变量a=3,则说明a指向存储3的空间,那么此时存储3的空间引用计数加1。如果此时
定义a=4,那么变量a的指向则指向内存中存储4的空间地址,存储4的空间引用计数加1,而之前存储3的空间引用减1为0,
则会被作为垃圾回收掉。
不可变类型
不可变类型有什么好处?如果数据是不可变类型,当我们把数据传给一个不了解的API时,可以确保我们的数据不会被修改。如果我们要操作一个从函数返回的元组,可以通过内建函数list()把它转换成一个列表。
python在声明不可变类型时会在已经声明的对象中寻找该对象是否已经被声明过,若该对象被声明过则,变量会直接指向该对象不会再申请新的内存空间。
如a=3已经声明这时声明b=3,则a,b指向同一块内存
不可变类型不能对其内容直接修改,如字符串'hellopython'可以对其进行分割加长的处理(经过如此处理之后python其实是将新的字符串储存到新的内存中),但是不能替换改变其字符串中某个字母的内容。
(一) 数字、字符串
例如:对于不可变类型 数字1,它在内存中的地址是唯一的。所以a=1, b=1都是指向存储1的内存地址。
如果a=2,那么变量a的指向则发生了变化,指向了存储2的空间地址。
举例:这里是最好区分可变与不可变类型的数据了。 如 现在是不可变类型 数字a=1,在修改a+1后得到的b,此时就会创建一个新的内存地址用来保存修改后的对象,所以内存地址不一样。而对于可变类型数据在这一点就不一样。
不可变类型:字符串
不可变类型: 元组
可变类型
可变类型:列表
可变类型:字典
转载于:https://www.cnblogs.com/lfblogs/p/9745739.html
可变类型与不可变类型的作用和意义相关推荐
- Python:python中的可变类型和不可变类型
Python的基本数据类型大致可分为6类: 1.Number(数字)(bool布尔类型.int整型.float浮点型.complex复数等都归为Number数字类型) 2. String(字符串) 3 ...
- Python的可变类型和不可变类型
可变类型与不可变类型 1.可变类型,值可以改变: 列表 list 字典 dict set (没有value的字典) 2.不可变类型,值不可以改变: 数值类型 int, long, bool, flo ...
- python不可变的列表被称为_【Python学习】可变类型和不可变类型
一.可变类型与不可变类型的特点 1.不可变数据类型 不可变数据类型在第一次声明赋值声明的时候, 会在内存中开辟一块空间, 用来存放这个变量被赋的值, 而这个变量实际上存储的, 并不是被赋予的这个值, ...
- Python当中的a += a 与 a = a + a 的区别,可变类型与不可变类型的数据类型,引用传参...
a += a 与 a = a + a 的区别 可变类型a = a + a 的示例 In [58]: a = [11,22]In [59]: id(a) Out[59]: 140702917607688 ...
- python中什么可变_Python中的可变类型与不可变类型
Python基础知识,自己写一写比较不容易忘 Python的每个对象都分为可变和不可变,主要的核心类型中,数字.字符串.元组是不可变的,列表.字典是可变的. 对不可变类型的变量重新赋值,实际上是重新创 ...
- Python的可变类型与不可变类型
Python基础知识,自己写一写比较不容易忘 Python的每个对象都分为可变和不可变,主要的核心类型中,数字.字符串.元组是不可变的,列表.字典是可变的. 对不可变类型的变量重新赋值,实际上是重新创 ...
- python四种可变类型_Python的可变类型与不可变类型
Python的每个对象都分为可变和不可变,主要的核心类型中,数字.字符串.元组是不可变的,列表.字典是可变的. 对不可变类型的变量重新赋值,实际上是重新创建一个不可变类型的对象,并将原来的变量重新指向 ...
- python可变类型和不可变深浅拷贝类型_理解python可变类型vs不可变类型,深拷贝vs浅拷贝...
核心提示: 可变类型 Vs 不可变类型 可变类型(mutable):列表,字典 不可变类型(unmutable):数字,字符串,元组 这里的可变不可变,是指内存中的那块内容(value)是否可以被改变 ...
- 【软件构造】数据类型、类型检查、可变不可变数据类型
文章目录 一.基本数据类型 和 对象数据类型 1.基本数据类型: 2.对象数据类型: 二.静态类型检查 和 动态类型检查 1.静态类型检查 2.动态类型检查 三.Mutable可变对象 和 Immut ...
最新文章
- VMware里的linux系统里的命令行里会有bee的声音,要如何关掉
- 详解linux系统的启动过程及系统初始化
- IE8不能正常登录网上银行的解决方法
- python顺序表代码_python实现顺序表的简单代码
- 光储充一体化充电站_福建全省首座光储充一体化公交充电站投入使用
- SDM For Face Alignment 流程介绍及Matlab代码实现之训练篇
- jzoj4020-Revolution【网络流,最小割】
- python 实现语音转文字_python3实现语音转文字(语音识别)和文字转语音(语音合成)...
- php 数据接口,初识 php 接口
- spring 相关框架面试题
- kingdee kis
- 左耳朵耗子:聊聊分布式系统架构
- ubuntu局域网服务器搭建网站,ubuntu搭建局域网dns服务器
- boost入门(一):boost简介
- Canvas 绘制直线
- Causality matters in medical imaging 文献解读
- [ 工具 ] ___ Browser : Chrome
- 黑马程序员_Java_反射
- 下载pytorch的经历(20220514)
- 计算机控制adda转换实验报告,ADDA实验报告