1.变量、常量、小整数池和垃圾回收机制
1 变量
1.1 什么是变量?
量是记录事物的状态/特征。变化的量就是可以变化的量。
1.2 变量的组成
(1) 变量名:描述变量的信息。 (2) 赋值符号‘=’:建立变量名与值的绑定关系。 (3) 值。
1.3 变量的命名规则
(1) 变量只能由数字、下划线和英文字母组成。 (2) 变量不能以数字开头。 (3) 变量不能用关键字。 注意:变量尽量不用下划线开头,下划线开头有特殊意义。 变量默认用小写字母和下划线组合。 js默认使用驼峰体,常量默认全大写。
变量的命名一般见名知意
1.4 变量的属性
(1) id:可以说是变量的内存地址。 (2) type:变量的类型(常用的有7种,分别是:int,float,str,list,dict,tuple以及set。) (3) value:值。
1 值相同的变量,id值不一定相同。(因为python优化了内存机制即小整数池,使得在小整数池范围内,变量的值相同的情况下,id值相同)
2 id值相同,变量的值一定相同。
2 常量
2.1 什么是常量?
常量是不变的量。
python中没有常量,一般默认全大写的为常量。这与js不同,js是有常量的。
如果没有别人的允许,一般不要修改别人的常量。如果是你自己写的,也尽量不要修改。
3 小整数池
3.1 产生的原因
1 小整数是经常被使用的整数
2 如果有多个变量名绑定相同的值,计算机会为每一个值开辟一个内存地址,这样造成了资源的极大浪费。为了节省空间资源以及提高空间资源的利用率,python优化了内存机制,将那些经常使用的整数提前分配好内存地址。如果有多个变量名绑定那些值,不需要去额外开辟新的内存空间。这就是小整数池。
3.2 范围
-5~256
4 垃圾回收机制
垃圾回收机制是python自带的。 1 引用计数:如果变量名与值有一个绑定关系,他的引用计数就记为1,如果有n个,就记为n。 每增加或减少一个,引用计数就增加或减少一,当引用计数为0时,系统自动回收其资源。 2 标记清除:当内存即将溢出或达到一个阈值时,系统会阻塞所有程序,对那些引用计数为零的进行标记,进行批量清除。 3 分代回收:分代回收是一种以空间换时间的操作方式,Python将内存根据对象的存活时间划分为不同的集合,每个集合称为一个代,Python将内存分为了3“代”,分别为年轻代(第0代)、中年代(第1代)、老年代(第2代),他们对应的是3个链表,它们的垃圾收集频率与对象的存活时间的增大而减小。 新创建的对象都会分配在年轻代,年轻代链表的总数达到上限时,Python垃圾收集机制就会被触发,把那些可以被回收的对象回收掉,而那些不会回收的对象就会被移到中年代去,依此类推,老年代中的对象是存活时间最久的对象,甚至是存活于整个系统的生命周期内。 同时,分代回收是建立在标记清除技术基础之上。分代回收同样作为Python的辅助垃圾收集技术处理那些容器对象