变量
在python中变量是什么?我们天天说变量,什么变量的命名规范,那么什么是变量?
首先在python中使用变量,不需要提前声明,也不需要指定类型
变量类型
我们天天说的变量其实是说变量类型:
变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。
变量名称:
变量的命名规范:
- 字母数字下划线组成,不能以数字开头
- 除了类名和异常名称外均使用小写字母加_的形式
- 类名和异常名大写字母开头并使用_分割
- 常量或全局全部使用大写字母
既然都有命名规范了,那么变量一定会有一个变量名
变量赋值
相信有句话我们也天天说:把xxx赋值给变量a,为什么我们要说<赋值>这个词?
a = 1
这句话的意思先不说,我们先看看这句话是怎么运行的:
- 在内存中开辟了一块内存空间,内存空间中的数据是1
- 在内存中开辟了一个叫 a 的变量
- 变量a 指向了 步骤1中的内存地址
- 变量a 创建成功
这里的 ‘=’ 号并不是数学中的等号,而是赋值运算符。将对象引用和内存中的某个对象进行绑定
简单的说就是开辟了一个整数类型的1 ,和一个变量a, a指向了1 。这就是赋值
赋值的作用就是让变量指针指向某一个对象 ,也就是说变量其实存储了一个对象的引用
变量的作用仅仅是一个标识,只有在赋值后才会被创建。=号用来关联变量和对象之间的关系
>>> b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined
仅定义一个变量名b,并不能成功创建一个变量,而是会报错:提示 变量名为b的变量 没有定义
也就是验证了变量只有在赋值后才会创建
a = 1
a = '1'
a = True
可以发现变量可以指向任何类型的数据,但是我们之前说过变量本身是没有类型的,但是变量的类型是如何来的呢?
>>>a = 1
>>>type(a)
<class 'int'>
>>>type(1)
<class 'int'>
变量的类型是对象的类型
>>> a = 1000
>>> id(a)
10932896
>>> id(1000)
10932880
>>> a
1000
我干了什么呢?定义了一个变量 查看了变量的id 又查看了 值的 id,发现这两个的id不一致。(id() 查看python中的内存地址(虚拟的))这也证明了 变量 仅仅是一个标识,并不是值, 当我们输入a 的时候就会打印出1000也验证了 变量 存储的是 对象的引用
小结:
- 变量是由 标识符、类型、值 组成,缺一不可
- 标识符可以理解成 内存地址,作为变量的唯一标识
- 类型:type 对象的类型
- 值: value 对象的值
- 变量存储了一个对象的引用
- 变量起到一个标识作用
- 变量只有赋值后才会创建
举个栗子
a = 1
b = a
a += 1
print(a)
print(b)
创建了变量a 将a 指向 数字类型的对象 1
创建了变量b 将b 指向 变量a(因 a是变量,进而 指向 数字类型的对象 1)
这时 a b 同时指向了 数字类型对象 1
a += 1 由于a的类型是int 不可变数据类型 所有没有实现就地加方法 即调用 a = a + 1
所以 创建了一个新的数字类型的对象 2 并将a 指向该对象
最终打印结果: 2 1