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)则可以直接修改

最新文章

  1. 3.密码pasuwado————记第一次超越Candy?
  2. .Net简单图片系统-使用说明
  3. sublime text 3 or sublime text 2 安装install package control
  4. 都昌 DCWriter电子病历编辑器演示文档截屏
  5. BAPI 调用相当于BAPI_TRANSACTION_COMMIT 的方法
  6. java heep space错误解决办法
  7. centos7 设置中文
  8. Mysql 修改列的顺序
  9. uvalive 4795 Paperweight
  10. 表达式:使用API创建表达式树(2)
  11. yii2.0使用之缓存
  12. Concurrency Is Not Parallelism (Rob pike)
  13. UVA424高精度加法
  14. 误用WeakHashMap引起的死循环cpu跑满问题
  15. es6 语法 (Decorator)
  16. Mongodb脚本记录
  17. 学习python,第二篇
  18. Redis(二):Redis的九大应用场景
  19. 【移动端debug-1】css3中box-shadow的溢出问题
  20. 拉普拉斯(Laplace)分布

热门文章

  1. redis 数据删除策略和逐出算法
  2. 问题解决: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"?
  3. 驱动开发 —— 从零开始(1) 配置vs20xx+wdkxx环境
  4. JCreator配置的Java学习环境
  5. 曹工说Redis源码(8)--面试时,redis 内存淘汰总被问,但是总答不好
  6. ida 调试android之路
  7. WeChair项目Beta冲刺(8/10)
  8. C++ vector迭代器访问二维数组
  9. Linux中bash的一些命令
  10. mysql 出现You can't specify target table for update in FROM clause错误的解决方法