03-01 python语法入门变量

一、变量

1、什么是变量?

变量就是可以变化的状态。变就是变化,量就是事物的状态

2、为什么要有变量?

人类想让计算机和人一样有记忆事物的状态,且这种状态是可以变化的。

详细的地说:程序就是一系列状态地变化,变是程序执行地直接体现,所以我们需要有一种机制能够反映或着说保存下来程序执行时状态,以及状态地变化。

3、如何用变量?

变量的定义与使用

变量的定义由三部分组成

  • 变量名:变量名相当于门牌号,指向变量值的内存地址,是访问值得唯一方式。
  • 赋值符号:等号为赋值符号,用来将变量值的内存地址绑定给量名。
  • 变量值:变量值就是我们存储的数据,反映的是事物的状态。

变量定义示范

原则:先定义,后引用

# 解释器执行到变量定义的代码时,会向操作系统发送系统调用申请一块内存空间,把18这个变量值的内存地址绑定给变量名age。
age = 18 		# 定义

# 通过变量名age就能访问到变量值18的内存地址,通过打印功能print打印出来
print(18)		# 引用

变量名的命名规范

  • 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']

错误示范如下:

# 变量名的命名不要使用拼音
mingzi = 'WangMao'

# 变量名的命名不要使使用中文
名字 = 'egon'

正确示范如下:

age_of_alex = 73
age1 = 84

变量名的命名风格

# 纯小写 + 下划线
age_of_alex = 84

# 驼峰体
AgeOfAlex = 73

变量名的三大特征

  • 1、id:反映的是变量值在内存中的唯一编号,内存地址不同id肯定不同

  • 2、type:变量值的类型

  • 3、value:变量值

查看变量值的三大特征如下:
>>> info = 'Hello World!'
>>> id(info),type(info),info
(1381707360816, <class 'str'>, 'Hello World!')
is与==
  • is:比较的是左右两个值身份的id
  • ==:比较的是左右两个值是否相等
# 示范一:值相同,id不同
>>> x = 'info:egon:18'
>>> y = 'info:egon:18'
>>> print(id(x), id(y))
1381707431536 1381707431472
>>> x is y
False
>>> x == y
True

# 示范二:值不相同,id不同
>>> a = 1
>>> b = 2
>>> print(id(a), id(b))
140714966501024 140714966501056
>>> a is b
False
>>> a == b
False

# 示范三:值相同,id相同
>>> m = 10
>>> n = 10
>>> print(id(m), id(n))
140714966501312 140714966501312
>>> m is n
True
>>> m == n
True

# 总结
# 由示范一、示范二可知:id不同的情况下,值可能相同(也就是两块不同的内存空间里可以存放相同的值)
# id相同的情况下,值一定相同(也就是 m is n成立,m == n也一定成立)
小整数池(了解)

注意:小整数池是pyhton解释器的优化机制,而pycharm把整数迟迟本文只做整数方面的了解,需要了解更多详细内容请到:https://www.cnblogs.com/jin-xin/articles/9439483.html#title-0-2-0

>>> m=10
>>> n=10
>>> id(m)
4562619328
>>> id(n)
4562619328

# 一般来说,m=10应该申请了一块内存空间,n=10也申请了一块内存空间,其中m=10的内存地址应该和n=10的内存地址编号不一致,可为什么导致id编号都一致呢?
# 这归功于python解释器启动的那一刻开始,就会在内存中事先申请好一系列内存空间存放好常用的整数,当这些整数在这个范围之中时,并不会开辟新的内存空间,目的是为了节约内存空间

二、垃圾回收机制和引用计数

什么是垃圾?

当一个变量值被绑定的变量名的个数为0是,该变量值无法被访问到,这个值就是垃圾

为什么要回收垃圾?

如果囤积了过多无法被访问到的变量值,且不能回收,内存空间就会可能发生内存溢出的问题,存在极大的危险性。

什么是引用计数?

变量值被变量名关联的次数

引用计数增加,如下:

x = 10	# 10的引用计数为1
y = x	# 10的引用计数为2
z = x	# 10的引用计数为3

引用计数减少,如下:

del操作清理的是栈区的内容普通用户,操作不了堆区(堆区由GC接管),只能操作栈区,我们的del操作解除的只是栈区中变量名与值得内存地址映射关系。详细了解请到该地址得垃圾回收机制原理分析中得标记清除小节:https://www.cnblogs.com/yang1333/p/12421112.html

# del减少引用计数
# 注意:del并不是删除的意思,而是解除变量名与变量值的绑定关系
x = 10	# 10的引用计数为1
y = x	# 10的引用计数为2
del y	# 10的引用计数为1
del x	# 10的引用计数为0,此时10引用计数为0被当作垃圾回收。

# 变量名换绑新变量值
n = 100	
n = 1000	# 把绑定100变量值的变量名n,换绑给新的变量值1000,此时100的引用计数为0被当作垃圾回收

三、常量

1、什么是常量?

常量指在程序中不会改变的量。

2、为什么要有常量

在程序的运行过程中,有些指是固定不变的不因该被改变,比如:圆周率等等

3、怎么使用常量?

  • 注意:在python中没有一个专门的语法定义常量,预定熟成使用全部大写字母的变量名表示常量。如:Π ≈ 3.14
  • 从语法成面讲,常量的使用与变量完全一致。
posted @ 2020-03-04 17:09  给你加马桶唱疏通  阅读(343)  评论(0编辑  收藏  举报