python中可变类型和不可变类型
2024-08-28 15:52:25
1.python中的可变类型和不可变类型
python中的数据类型大致可分为6类:1.Number(数字) 2. String(字符串) 3. Tuple (元组) 4. List(列表) 5. Dictionary (字典) 6. Sets(集合) (bool布尔类型、int整型、float浮点型、complex复数等都归为Number数字类型)
这6种数据类型中不可变类型为number、string、tuple,可变类型为:list、dict、set不可变类型:不可变类型的变量在第一次赋值声明的时候,会在内存中开辟一块空间,用来存储这个变量被赋予的值,存放这个值的内存空间就是内存中的一个地址,而这个变量存储的并不是被赋予的值而是存放这个值的内存地址,通过这个地址,变量就可以在内存中取出数据了,所谓不可变就是说,我们不能改变这个数据在内存中的值,所以当我们改变这个变量的赋值时,只是在内存中重新开辟了一块空间,将新的数据存放到新的内存地址里,而原来那个变量就不再引原数据的的内存地址,而是转换为引用新数据的内存地址了。
可变数据类型:当你第一次赋值声明了一个可变数据类型的时候, 同样会在内存中开辟一个空间, 并且将你所赋的数据值放在这块内存中, 然后将这个变量指向数据所在的内存地址, 不同的是, 可变数据类型可以对内存中的数据直接进行修改, 并且不会导致变量引用地址的变化, 但是这种修改仅限于Python中的内置方法, 比如list.append(), list.remove(), dict.pop(), dict.clear()等, 如果要是进行重新赋值的操作的话, 一样会改变变量的地址指向。而且当变量重新指向了新的内存之后,之前的内存也就被自动回收了。
2.对于全局变量的修改
- 如果全局变量是不可变类型(number、string、tuple),那么如果想要在函数中对函数变量进行修改,则需要先在函数内,声明其为global,再进行修改如果是可变类型为(list、dict、set)则可以直接修改
最新文章
- 3.密码pasuwado————记第一次超越Candy?
- .Net简单图片系统-使用说明
- sublime text 3 or sublime text 2 安装install package control
- 都昌 DCWriter电子病历编辑器演示文档截屏
- BAPI 调用相当于BAPI_TRANSACTION_COMMIT 的方法
- java heep space错误解决办法
- centos7 设置中文
- Mysql 修改列的顺序
- uvalive 4795 Paperweight
- 表达式:使用API创建表达式树(2)
- yii2.0使用之缓存
- Concurrency Is Not Parallelism (Rob pike)
- UVA424高精度加法
- 误用WeakHashMap引起的死循环cpu跑满问题
- es6 语法 (Decorator)
- Mongodb脚本记录
- 学习python,第二篇
- Redis(二):Redis的九大应用场景
- 【移动端debug-1】css3中box-shadow的溢出问题
- 拉普拉斯(Laplace)分布
热门文章
- redis 数据删除策略和逐出算法
- 问题解决:psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket ";/var/run/postgresql/.s.PGSQL.5432";?
- 驱动开发 —— 从零开始(1) 配置vs20xx+wdkxx环境
- JCreator配置的Java学习环境
- 曹工说Redis源码(8)--面试时,redis 内存淘汰总被问,但是总答不好
- ida 调试android之路
- WeChair项目Beta冲刺(8/10)
- C++ vector迭代器访问二维数组
- Linux中bash的一些命令
- mysql 出现You can't specify target table for update in FROM clause错误的解决方法