元组、数字、字符串属于不可变类型对象。
举个例子,列表 list_1 = 如果你用 list_1.append(4) 你会发现前后的 id(list_1)是没有发生变化的。但是如果你使用 list_1 = ,这时的 id 就发生了变化。
而对于你说的占用资源,python的垃圾回收机制会自动回收无法再被引用的值。比如你定义 a = 1 , 然后又重新定义 a = 2 , 此时 1 的值所在的内存就会被自动回收。
Python的hash代表的就是地址,所有的数据都是建立在hash表上的,通过索引hash值得到具体数据的地址
很有意思的一个例子 a=1 b=2-1
ab的hash是相同的 jinzhu160 发表于 2022-5-8 11:44
好的,好像明白了,python 中一切数据类型都是对象,比如 int a =1 ,这个 1 也是对象,其他语言这都是值 ...
对的,python里面一切皆对象,数字、列表、字典、函数这些都是对象,变量就相当于对这些对象的引用,python变量实现方式就是引用语义,而其他语言使用值语义来实现。
C语言中定义很多个int类型变量的值都为1的话,就要同时占用很多的1的内存,但是python里面定义很多个变量值为1的话,相当于很多个变量都指向了同一个内存,当存储1的对象引用计数器变为0的时候,不会再被引用,就会自动清理掉了 Python是面向对象语言,万物皆对象 python中的赋值就是一个面向对象,每打印一次地址都会变化只有-5到256之间整数的地址是固定 Python有小整数池的,你试试看114514这个数,结果应该就不一样了
页:
[1]