目录

  • 1、变量与常量
  • 2、如何使用变量?
  • 3、定义变量
  • 3.1、定义一个变量
  • 3.2、同时定义多个变量
  • 4、变量名的命名规则
  • 5、变量值
  • 5.1、变量值的三个特征
  • 5.2、变量值的比较
  • 5.2.**、小整数池


1、变量与常量

在编写程序时,表示数据的量可以分为两种:常量和变量。

  • 常量,是指在程序运行过程中值不能发生改变的量,如一些具体的值:1、3.5、3+4j、“abc”等。
  • 变量,是指在程序运行过程中值可以发生改变的量。比如人的年龄,游戏角色的等级、金钱等;Python中的每一个变量都需要指定一个名字,如:name、x、test等。

tip:Python语法中没有常量的概念,无法定义常量。但是在Python中约定,当一个变量名中的所有字母都大写时,代表这是一个常量。

2、如何使用变量?

使用规则是:先定义,后引用。

>>> name = 'python'   #定义
>>> name              #引用
'python'

那么在定义和引用的过程中,我们的计算机发生了什么变化呢?

  • 定义的过程中,首先在内存中开辟一块空间,用于存储数据,就相当于你在宾馆中开了一间房;然后将存储该数据的内存地址保存在变量名中,就相当于宾馆的房间号。
  • python 变量组合 python中变量_内存地址

  • name就是变量名,相当于房间号;‘python’就是房间中所存储的值
  • 引用的过程,即顺着变量所保存的内存地址去寻找该内存地址中所存储的值,通俗一点就是拿着房间号去找房间。

3、定义变量

3.1、定义一个变量

Python是一种弱类型语言,变量的类型由其值的类型决定。变量在使用前不需要先定义,为一个变量赋值后,则该变量会自动创建。

语法:变量名 = 变量值
如:name = 'python'

3.2、同时定义多个变量

在一条语句中可以同时定义多个变量。

语法:变量1,变量2,…,变量n = 值1,值2,…,值n

>>> name, age = '张三', 18
>>> name
'张三'
>>> age
18

对于已定义的变量,也可以在一条语句中修改多个变量的值。

>>> x, y = 5, 10
>>> x, y
(5, 10)
>>> x, y = y, x
>>> x, y
(10, 5)

4、变量名的命名规则

  1. 变量名可以包括字母、数字和下划线,但是数字不能作为开头字符。
  2. 系统关键字不能作为变量名。例如,and、break 等是系统关键字,不能作为变量名使用。
  3. Python 的变量名区分大小写。例如,test 和 Test 是两个不同的变量名。

5、变量值

5.1、变量值的三个特征

即 id,type 和 value。

  • id:反映的是变量值的内存地址,是根据内存地址计算出来的一个号码,即内存的一种映射。内存地址不同,id则不同。
  • type:即变量值的类型:整型、浮点型等。
  • value:值本身。
# 查看一个变量名的id 和 type。
>>> name = '张三'
>>> id(name)
46061760
>>> type(name)
<class 'str'>

5.2、变量值的比较

使用 is 或 == 进行变量值的比较。

  • is:比较左右两个变量身份(id)是否相等。
  • ==:比较左右两个变量值本身(value)是否相等。
# 值一样的两个变量,其id也有可能是不一样的
>>> x = 'info: shm: 18'
>>> y = 'info: shm: 18'
>>> x is y
False
>>> x == y
True
>>> id(x), id(y)
(44256096, 46059456)

内存分析

  1. 首先在内存中开辟一块空间,用以存储值 ‘info: shm: 18’,并把其内存地址保存在x中;
  2. 接着再在内存中开辟一块空间,用以存储相同的值值 ‘info: shm: 18’,并把其内存地址保存在y中;
  3. 这就相当于内存中被开辟了两块内存空间,而id 是内存地址的一种映射,当然x 与 y 的id 就不一样了。

5.2.**、小整数池

根据上面介绍的内容,首先来观察一个神奇的现象。

>>> x = 100
>>> y = 100
>>> x is y
True
>>> x == y
True

这种情况似乎和我们上面所分析的内存状态不符。下面呢,让我们来了解一下小整数池。

介绍: 小整数池是Python自带的一个优化,从 Python 解释器启动的那一刻开始,就会在内存中事先申请好一系列内存空间,用以存放常用的整数[-5, 256]。

即,在上述例子中,代码还没有运行到x = 100时,100就已经存在于内存空间中,当代码运行到x =100时,只是把100 的内存地址保存在了x中;同理,y也一样。不仅如此,之后凡是值为100的变量,其id都是同一个。

>>> x = 100
>>> y = 100
>>> id(x)
2070047456
>>> id(y)
2070047456
>>> res = 96 + 4
>>> id(res)
2070047456

其实在一些简单的字符串中也会存在这种现象,同样也是Python自带的一种优化。
注意: 使用pycharm 时,小整数池的范围会扩大,这并不代表Python的特性,只是pycharm的一种优化。