查询框赋值后不可编辑_Python--可变类型,不可变类型

众所周知,Python中有很多种类型:

Number 数值类型

Str字符串类型

tuple元祖类型

List列表类型

Dictionary字典类型

Set集合

那么这些类型中,究竟哪些类型属于可变类型,哪些又属于不可变类型呢,接下来,让我们一起来看一看!!!

在这里先给大家推荐一个强大的网页编辑器: http://pythontutor.com/live.html#mode=edit,这个编辑可以清楚地推演出变量的变化过程,接下来让我们先来看看什么是可变类型!!!

可变类型

基础概念:可变数据类型是指变量所指向的内存地址处的值是可以被改变的,也就是说可变类型在赋值的时候copy的是地址或者引用.

属于可变类型的类型: List,Dictionary,Set.

1.List

abc551654054753929e3e24c7edc9b7a.png
fcc825bbd4f23c88a527347e4b8d2bad.png
3a7201386fef19f30770b64cb8451fe4.png
1f1462df7374b351e6c00354fead170b.png

3.Set

2486edf4f63419d5eaf82e424b89a83a.png
1c93301009fa476db46bbc730158d51b.png

注:以上类型值的改变都是基于内存地址的改变,改变的是内存地址的值.

不可变类型

概念:不可变数据类型在第一次声明赋值声明的时候, 会在内存中开辟一块空间, 用来存放这个变量被赋的值, 而这个变量实际上存储的, 并不是被赋予的这个值, 而是存放这个值所在空间的内存地址, 通过这个地址, 变量就可以在内存中取出数据了. 所谓不可变就是说, 我们不能改变这个数据在内存中的值, 所以当我们改变这个变量的赋值时, 只是在内存中重新开辟了一块空间, 将这一条新的数据存放在这一个新的内存地址里, 而原来的那个变量就不在引用原数据的内存地址而转为引用新数据的内存地址了,相当于改变了变量指向的内存地址.

属于不可变类型的类型: Number ,Str,tuple

1.Number

9a65e1b4d0fa8edd038874fa3eb7d18a.png

2.Str

919f009c67b07673be3d527fc12dfb68.png

3.tuple

元组类型是一个比较特殊的类型,看下图:

当元组内不存在数组类型时,那么不可变.

1ff5e81f93cef283f327c801284f0312.png

当元组内存在数组类型时,那么元组内数组是可变的.

2e2656273849c6b3ece76f9df8037b33.png
3083ed4a05d9b03500614fa8a5fce2a6.png
9d3c2b9f5445044b42b67e3c46f64e2a.png

注:产生这种情况的原因是,元组的最后一个元素内存地址指向的或者说引用的是list,而我们更改值的时候更改的也只是list的内存地址的值,元组其余的元素还是不可变的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值