目录python
变量:描述世间万物的状态性能
在申请变量的时候,会在内存中申请内存空间,变量值是存在于内存中的。优化
一个变量,内存就开辟一个内存空间存储这个变量。3d
好比:code
x = 10
当咱们在p1.py中定义一个变量x = 10
,那么计算机把这个变量值10存放在哪里呢了?咱们回顾计算机的三大核心组件为:CPU、内存和硬盘。必定不是CPU,那是存放在内存仍是硬盘中了呢?咱们再回顾变量运行的三个过程,若是咱们没有使用python解释器运行p1.py这个文件,那么x=10
很明显只是很普通的四个字符x、=、一、0。而只有Python解释器运行了这个文件,那字符进入了内存,才会有变量这个概念。也就是说变量是存放在内存当中的。对象
变量存放在内存中这句话太宽泛了,咱们把它具体化。如今想象咱们在学校(电脑内存)里上课,学校每开一个班,学校都会开辟一个教室给这个班级上课用(存放变量值10),而班级的门牌号则是(变量名x)。也就是说,对于电脑内存这个大内存,每定义一个变量就会在这个大内存中开辟一个小空间,小空间内存放变量值10,而后内存给这个小空间一个变量名x(门牌号),x指向10。blog
定义一个变量,内存就开辟一个内存空间存储这个变量。在变量被打印输出而且后面无引用的时候,会释放变量的内存空间。内存
对于p1.py,若是咱们再加上一段代码x = 11
,大内存会开辟另外一个小空间存储变量值11,把变量值绑定另外一个门牌号x,可是因为以前有x,因此大内存会解除x与10的链接,让x与11链接。这个时候10因为没有了门牌号,因此成为了python眼中的垃圾,python就会处理这个垃圾,释放10的内存占用,这就是python的垃圾回收机制。而其余语言须要手动把10的内存占用释放掉。字符串
如:pycharm
height = 180 # 定义变量 # print(180) # print会自动帮你建立一个变量180,打印完以后,立刻释放180的内存空间
举例:从上述的解释咱们能够知道只要某个变量值绑定着门牌号,就不是垃圾,反之变量值没有绑定着门牌号,这个变量值就是垃圾,python就会自动清理这个垃圾。这里咱们对于这个门牌号给定一个专业的解释,在python中这个门牌号被称做引用计数。
如:
#引用计数 x = height # 180的引用计数加1 del x # 释放的是引用计数,180的引用计数为1 del height # 引用计数为0, # 引用计数为0时,触发垃圾回收机制,释放内存占用
对于上一节讲的引用计数,须要注意的是:Python实现int的时候有个小整数池。为了不因建立相同的值而重复申请内存空间所带来的效率问题。==Python解释器会在启动时建立出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被垃圾回收机制回收。==在pycharm中运行python程序时,pycharm出于对性能的考虑,会扩大小整数池的范围,其余的字符串等不可变类型也都包含在内一便采用相同的方式处理了,咱们只须要记住这是一种优化机制,至于范围到底多大,无需细究。