目录
一.变量
1.什么是变量
变量就是可以变化的量,量是指事物的状态,比如人的年龄,身高,游戏的等级,金钱等
2.为什么要有变量
- 为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的
- 程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态,以及状态的变化。
3.如何使用变量
1.变量的基本使用
原则:先定义,后使用
变量名 = 变量值
name = 'lwx' #定义
print(name) #使用
age = 18 #定义
print(age) #使用
#执行结果
#lwx
#18
2.内存管理:垃圾回收机制
1.引用计数:变量被引用的次数
- 引用计数增加
x = 10 #10的引用计数为1
y = x #10的引用计数为2
z = x #10的引用计数为3
引用计数减少
del x #解除变量名x与值10的绑定关系,此时引用计数为2
del y #解除变量名y与值10的绑定关系,此时引用计数为1
#注意:del是解除绑定
3.垃圾
当一个比变量引用计数为零时,称作垃圾(此时该变量用不到,因为我们定义变量的目的是拿来用的,当它为零时就用不到了)
4.垃圾回收机制
当变量值的引用计数为0的时候,该变量值会被Python自动回收它的内存占用
3.变量的三大组成部分
-
变量名
指向等号右侧值的内存地址,用来接收,访问值
-
赋值符号
将变量值的内存地址绑定给变量名
-
变量值
代表记录事物的状态
4.变量名的命名规范
定义一个变量其实就是在记录现实世界中的的状态,并且存永远不是目的,取才是目的。所以变量的命名应该满足以下三个规范:
- 变量的命名应该能反映变量值所描述的状态,切记不可用中文
- 变量名必须用字母数字下划线组合,并且变量名的第一个字符不能是数字
- 关键字不能声明为变量名
['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']
5.变量名的命名风格
- 驼峰体体
AgeOfLwx = 19
print(AgeOfNovember)
#19
- 下划线体(推荐使用)
age_of_lwx = 19
print(age_of_lwx)
#19
6.变量值的三个重要特征
1.三个重要特征
-
ID
反映的是变量值的内存地址,内存地址不同ID不同
-
type
用于记录不同类型的值
-
value
值本身
name = 'lwx'
print(id(name))
print(type(name))
print(name)
# 执行结果
# 13754208
# <class 'str'>
# lwx
2.is和==
is :比较左右两个变量的ID是否一样
==:比较多有两个变量的值是否一样
x = 11
y = x
z = 11
print(x == y) # True
True
print(x is y) # True
True
print(x is z) # True,整数池的原因
True
x = 257
z = 257
print(x is z) # False
False
从上述打印消息中可以看出:
ID相同的变量,值一定相同(指向的是同一个内存地址)
值相等的变量,ID可能不同
3.小整数池
[-5,256]之间的整数会在Python解释器启动的时候,自动开辟一块内存存入这些整数.也就是说这些整数不会因为引用计数为0而被删除
二.常量
1.Python的常量
常量是约定俗成的一种规范,常量名的定义方式为全大写,实际上可以被修改
如果是常量,那就没必要更改,所以python就只制定了一个规范,而没指定常量的语法,因此常量也是可以修改的,但不建议
AGE_OF_lwx = 19
print(AGE_OF_NOVEMBER)
#18
2.其他语言的常量
在c语言中有专门的常量定义语法,const int age = 19;
,一旦定义age
为常量,更改age
即会报错,但是Python不会