变量、数据类型和内存管理
文章目录
一、变量
1.变量的使用
age=18
sex='male'
height=1.81
左侧的age为变量名,中间的=表示赋值符号,右侧的18为赋给变量的具体数值。
2.变量的命名规范
大前提:变量名的命名应该能反映变量值所记录的状态
- 变量名只能是字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 关键字不能声明为变量名
3.变量的使用风格
- 驼峰体:
首字母大写作为多个字母的间隔标识,一般用于类的命名。
class CompanyPosition():
pass
- 下划线
小写字母+下划线组合,并用下划线作为多个字母的间隔标识(变量常用的命名方式)。
age_of_tim=40
number_of_student=60
4.常量
python没有专门的语法定义常量,故约定俗成用全部大写的变量表示常量。
PI=3.1415926
二、基本数据类型
三、内存管理
1.python的存储原理
在python中变量名和变量值内存地址的关联关系存放在栈区,而变量值存放在堆区,内存管理回收的是堆区的空间。
例如x=10,y=100
注:图中#数字表示不同的内存地址,后面的图中也是表示此意。
python变量中存储的是值的内存地址,同样的列表、字典等类型中存储的也是值的内存地址。
若改变上方代码中x的值,使其变为100,也就是把100的内存地址存储到了x中,如下图所示。
2.直接引用与间接引用
直接引用指的是从栈区出发直接可以引用的内存地址中的值。
间接引用指的是从栈区出发后,还要再进一步的引用才能引用出内存地址中的值 。
x=10
y=[100,x]
在上述的代码中x直接引用了值10,y直接引用了列表,间接引用了100、10两个值。
3.垃圾回收机制
如下图中,10这个值上没有被任何变量直接或间接引用,它是用不到的数据,会额外占用内存空间。python中的垃圾回收机制会定期扫描内存中的数据,当发现此类数据时就会将其清理掉以减少内存的占用。
4.小整数池与字符串驻留机制
当python解释器运行时,会提前准备好[-5,256]范围内的整数值,这些数值在不被引用的情况下也不会被垃圾回收机制清理掉。
在python中值相同的字符串仅仅会保存一份被存在同一个内存空间中,也就是说多个变量同时共用一个字符串。但是这种驻留机制触发的前提有两点:
- 字符串仅包含数值、字母和下划线
- 字符个数不超过20
s1='abc'
s2='abc'
s1 is s2
>>>True
s1='ab c'
s2='ab c'
s1 is s2
>>>False
s1='ab'*11
s2='ab'*11
s1 is s2
>>>False