同学们,大家好,今天要介绍的这一节知识在python体系里面是非常非常重要的知识,因为它不仅是你理解python程序中重要的一环,而且面试的时候也会经常考到,像python的垃圾回收机制。
我们在大学中学习静态编译语言时,类似C、C++等,在使用类型时,会首先声明变量和类型,而在python中却不用,这是因为python的特殊动态类型所决定的,也是其语言灵活性的个根源。
首先我们举个例子:
在python交互模式下,输入“a=8”这个语句时,会发生什么呢?
1、首先创建一个对象来代表8.(注:初学者可能总是搞不懂到底什么是对象,根据我的总结,你可以记住一句话——一切皆对像,就是你看到的一切都可以理解为对象)
2、创建变量a
3、 把a和对象8像连接
所以以上可以总结出一句非常非常重要的、要时刻谨记的话——变量是对象的引用。这句话要牢牢记在心里。
在得出这个结论——变量是对象的引用之后,便可以理解我们这里的垃圾回收机制了。想像一下,在程序中有无数个对象,如果一个对象被用过之后再也不用了,不进行回收的话会占掉相当大的内存,这时便引入垃圾回收机制。
在一个对象中都有两个标准的头信息,一是表明这个对象的类型,例如例子中对象8的头信息之一便是数字类型;二是表明对象引用了多少变量的计数器,例子中对象8只引用了变量a,所以此时计数器为1,如果当计数器为0时,那么对象8所占的内存将被收回,此即为垃圾收回机制。
除了垃圾收回机制,在此基础上还要理解共享引用、共享引用在原处修改以及共享引用与相等等延伸知识,因为在这里我已经把最为重要的知识介绍过了,剩下的难度不大,同学们可自己学习。