我们学习python语言是为了控制计算机,为了让计算机能够像人一样去工作,所以在python这门语言中,所有语法存在的意义都是为了让计算机具备人的某一项技能,这句话是我们理解后续所有python语法的根本
变量
变量就是可以变化的量,量指的是事物的状态,比如人的年龄、性别,游戏角色的等级、金钱等等
为什么要有变量?
为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态,以及状态的变化
打个比方,我们需要记忆一个人的体貌特征,他的体貌特征是会随着时间变化而改变的,所以我们要在大脑中开辟一块记忆空间,把这个记忆空间给命名成这个人的名字,然后把他的体貌特征给存放进去,下次再见到他的时候就修改这块空间里的内容就好了
同样的,解释器执行到变量定义的代码时会申请内存空间来存放变量值,将变量值的内存地址绑定给变量名,每次修改只需要修改变量对应内存地址里存放的值即可
变量的使用
原则:先定义后引用
name = 'kinght' #定义变量name 并赋值kinght
print(name) #引用name变量 #print 打印
定义就是在内存中开辟一块名为name空间,赋值就是将kinght的字符串存放了进去,引用就是输出引用了房间号为name的值,那就是kinght
变量的内存管理
前面提到过,申请变量其实就是占用内存空间,但内存的大小是一定的,如果内存空间不使用了,而程序还在运行,不停的加载占用内存空间,就可能会导致内存溢出,所以不使用的内存空间就需要及时释放
内存管理:垃圾回收机制
PS:这里只是简单阐述,详细内容请参考后文
垃圾回收机制(简称GC)是Python解释器自带一种机制,专门用来回收不可用的变量值所占用的内存空间
引用计数:一个内存空间上捆绑了几个变量的名字
垃圾:当一个变量值被绑定的变量名个数为0时,该变量值无法被访问到,称之为垃圾
简单来说:用来回收没有关联变量名的值,引用计数为0的值
x = 10
print(x)
del x #解除了x的绑定关系
print(x) #由于解除了绑定关系,所以报错
解除了x绑定了之后,空间对应的引用计数就为0,python就会释放这块空间
变量的组成部分
变量名
变量名是用于指向内存地址、访问地址的值
# 命名规范
1. 变量名只能是 字母、数字或下划线的任意组合
2. 变量名的第一个字符不能是数字
3. 关键字不能声明为变量名,常用关键字如下
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from','global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
关键词不需要硬记,通常继承开发环境遇到关键词会变色
变量命名应该见名之意,但为了规范最好不要写拼音和中文汉字,在见名之意的情况下尽可能短
# 变量名命名风格
1.纯小写加下划线(python中推荐)
kinght_blog
2.驼峰命名法(每个单词首字母大写)
KinghtBlog
赋值符号
将变量值的内存地址绑定给变量名
变量值
代表记录事物的状态
# 变量值三个重要特征
id:反应的是变量值的内存地址,内存地址不同id则不同
查看id号:print(id(name))
type:不同类型的值用来表示记录不同的状态
查看type:print(type(name))
value:值本身
查看值:print(name)
变量比较
# is:比较左右两个值身份id是否相等
x is y
# ==:比较两个值的值是否相等
x == y
id不同的情况下,值不一定相等,即两块不同的内存里可以存在相同的值
id相同的情况下,值一定相等,即取同个内存空间的值
值可能相等,id不一定相等,即若值相等,则可能是小整数池导致的
小整数池
在python解释器启动那一刻开始,就会在内存中事先申请好一系列内存空间存放好常用的整数或常用的字符串
而pycharm则会申请比python解释器更广阔的小整数池
常量
常量就是在程序运行过程中不变的量
注意:在python中没有常量,但是在程序开发的过程中会涉及到常量的概念
变量名全部为大写的时候,程序员约定默认为常量(不是语法规范,而是行业约定)
PI = 3.1415926 # 圆周率
常量就是在程序运行过程中不变的量
注意:在python中没有常量,但是在程序开发的过程中会涉及到常量的概念
变量名全部为大写的时候,程序员约定默认为常量(不是语法规范,而是行业约定)
PI = 3.1415926 # 圆周率