Python 对于不可变类型的分析

本文探讨了Python中不可变类型的重要性,如数字、字符串和元组。不可变类型因其安全性和唯一性成为Python核心。不可变类型不需扩展数据区,与可变类型相比,它们的内存管理更直接。Python的变量机制包括先创建内容再绑定变量名,重新赋值时会生成新内容并替换旧内容的地址,旧内容由系统回收。通过对全局变量的观察,可以验证这一机制。
摘要由CSDN通过智能技术生成

方法

如题,那么为什么,因为不可变类型恰恰是Python的核心类型中的核心类型!
例如数字、字符串,可以说其他所有的类型都是基于这类不可变类型之上的。

而元组,是为了安全,而将一个可变类型的列表去掉可变的方法,在一些严格的环境下应用。
数字、字符串同理,安全、专一!

数据结构

可变类型的特点,数据可以增减,变量的特点,id不变,那么数据的增减是建立在对数据区的编辑上的,而数据区的大小不固定,由于内存的分配问题,数据区是无法与id绑定的,所以可变类型都是id即变量内容处的数据部分都存放着数据区的地址,而数据区又存放着元素变量的地址,这样一链接一链,猜到了元素内容。
而不可变类型,他的id就是他的全部,从区域内读取变量地址,至变量内容区域。直接就是变量内容,通常是变量内容长度+变量内容,例如元组、字符串,整数也是不过他存放的是数据块数。少部分有不是很用得到的地址,例如包含非ascii的字符串,虽然他标了地址,但大概有其他原因,例如之间的内存可能有其他用途,总之,除了元组的推导式,会在过程中来回移动数据,不过变量名生成的时候是元组推到完成之后。
总的来说,不可变类型省去了数据区的链接,因为不需要扩展。

Python的变量机制

1、生成变量内容
2、在区域内写入变量名称和对应的地址

所以是先有内容,再有变量,当变量被重新赋值时:

1、生成新的变量内容
2、将区域内变量名称对应的地址用新的变量内容的地址覆盖
3、之前的变量内容会被系统清理掉

a=1
print((id('a').to_bytes(length=8, byteorder='little'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值