基本语法之-变量&常量
文章目录
一、变量
1.1、作用
就是把程序运算的中间结果临时存储到内存里,以备后面的代码继续调用。
1.2、变量申明
name = huangxx
其中name就是变量名(标识符),huangxx就是变量值
1.3、变量定义规则
a、命名要求:
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 关键字不能声明为变量。关键字有如下:[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
附-Python3 查看关键字都有哪些的方法:
>>> import keyword
>>> print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
b、命名规范:
- 驼峰命名法: CustomerName
- 下划线分割命名: customer_name (推荐使用,清晰明了)
- 不推荐使用中文、拼音作为变量、不推荐变量名过长、不推荐变量名词不达意———这些都让人觉的很low
1.4、变量的其他定义方法
a、连续多个变量定义
num1 = num2 = num3 = 1
b、交互式赋值定义变量
num6, num7 = 6,7
1.5、变量的变化
变量的创建过程
首先,当我们定义了一个变量name = ‘oldboy’的时候,在内存中其实是做了这样一件事:
程序开辟了一块内存空间,将‘oldboy’存储进去,再让变量名name指向‘oldboy’所在的内存地址。如下图所示:
变量是保存在内存中的,存放在内存中就会分配地址,查看变量在内存中的地址方法,如下:
>>> name = "oldboy"
>>> id(name)
4317182304
变量的修改过程
实际的原理什么样的呢? 程序先申请了一块内存空间来存储‘oldboy’,让name变量名指向这块内存空间
执行到name=‘alex’之后又申请了另一块内存空间来存储‘alex’,并让原本指向‘oldboy’内存的链接断开,让name再指向‘alex’。
>>> name = "oldboy"
>>> id(name)
4317182304
>>>
>>> name = "alex"
>>> id(name) # 明显变量的id发生了变化。
4317182360
变量的指向关系
>>> name1 = 'oldboy'
>>> name2 = name1 # 把name1赋值给name2,这样name2的值也是oldboy了
>>> print(name1,name2)
oldboy oldboy
>>>
>>> name1 = 'alex'
>>> print(name1,name2) #改了name1后,name2为何没跟着改?
alex oldboy
要想知道上面问题的结果是为什么,首先要了解在内存中两个变量的存储情况
从上面的示意图中我们可以知道,当执行name2=name1这句话的时候,事实上是让name2指向了‘oldboy’所在的内存地址。
修改name1的值,相当于断开了name1到‘oldboy’的链接,重新建立name1和‘alex’之间的链接。在这个过程中,始终没有影响到name2和‘oldboy‘之间的关系,因此name2还是‘oldboy’,而name1变成了‘alex’。
二、常量
2.1、常量:指不变的量
Python没有关键字定义常量。大家约定使用全大写字母表示常量。比如 NUMBER = 3。
常见的常量,比如数字。1 、2 、3 、4、 π等
2.2、约定俗成定义:
在Python中没有一个专门的语法代表常量,程序员约定用变量名全部大写代表常量
AGE_OF_OLDBOY = 56
三、变量与常量关系
3.1、总结
3.2、特别说明:变量与常量的内存存储关系。
先看一段代码:
a = 3
b = a
a = 4
print('a=', a, 'id(a)=', id(a))
print('b=', b, 'id(b)=', id(b))
运行结果:
a= 4 id(a)= 4415029488
b= 3 id(b)= 4415029456
- 首先,在内存中分配一片空间,来保存常量 3 。如图
- 然后,在内存中分配一个空间,命名为变量a,并将常量 3 的地址(一般为起始地址) 保存在变量 a 的存储空间。也就是说,a里面保存的是常量3的地址。
- 在内存中分配一个空间,命名为变量b,并将常量 3 的地址(一般为起始地址) 保存在变量 b 的存储空间。也就是说,b里面保存的是常量3的地址。
- 首先,在内存中分配新的一片空间,来保存常量 4 。如图
- 然后,在内存中分配一个空间,命名为变量a,并将常量 4 的地址(一般为起始地址) 保存在变量 a 的存储空间。也就是说,a里面保存的是常量4的地址。