我和Python的Py交易》》》》》》可变数据类型和不可变数据数据类型的本质是内存回收机制的不同

可变数据类型与不可变数据类型的爱恨情愁...不对是前世今生

复制代码
a = ['托尼·斯塔克', '马克系列', '反浩克装甲', '血边战衣'] # 而不可变数据类型则是每一次引用内存地址都是不变的 # 可变数据类型的内存地址引用一次改改变一次 print(id(a)) # 32076360 print(id(['托尼·斯塔克', '马克系列', '反浩克装甲', '血边战衣'])) # 31274056 print(id(a[0])) # 32006192 print(id('托尼·斯塔克')) # 32006192 print(id(a[1])) # 6719984 print(id('马克系列')) # 6719984 print(id(a[2])) # 31383040 print(id('反浩克装甲')) # 31383040 print(id(a[3])) # 31994216 print(id('血边战衣')) # 31994216
复制代码

还是有些迷糊是吧.............啥也不说了,直接上图(图里说)

 

可变数据类型与不可变数据。每次引用可变数据类型时,其内存地址都会改变,当引用不可变数据是,其内存地址都是和第一次引用时相同的。

这个现象的是Python的内存回收机制造成的。

可变数据类型每当引用可变数据类型数据后,Python会立即回收刚才引用可变数据类型数据分配出去内存,这样就造成下次再引用该可变数据类型数据又要重新分配内存空间给该数据。

不可变数据类型第一次引用不可变数据类型数据是,Python就会分配一个内存空间给该不可变数据类型数据,第一次引用之后的每一次引用都会找到这个内存空间来取数据,

        当这个不可变数据类型数据不在被引用时,其内存空间才会被回收。

欢迎评论留言,番茄,鸡蛋都砸过来吧。

还想知道Python数据类型的其他知识就戳这哦!!

猜你喜欢

转载自www.cnblogs.com/barkingpig/p/9103592.html
今日推荐