在各种教程中,变量都被描述成用于存储数据的盒子,的确,这个东西看似很正确,但看看下面这串代码:
# 定义一个列表给变量a
a = [1,2,3,4]
#将a的数据赋予给b,并打印出b看看
b = a
print(b)
# 修改a的值,并在此输出b看看
a[0] = 100
print(b)
没错,b也因为a被修改而修改,输出的结果也变成了[100,2,3,4]因此我们可以知道,变量真的不是所谓存储数据的盒子,更为接近本质的解释是:变量是值的标签,变量指向特定的值。
我们之所以能够得到上面那个代码的例子,也是因为列表这种数据容器的特殊性:可以被修改。
同样的例子放在字符串,浮点数等等都不行,原因也显而易见,不多解释啦。
再解析一下红字:标签意味着,一个值可以有多个变量(标签),就像一个人既可以是爹也可以是儿子一样,但后面说,变量指向特定的值是什么意思呢?
变量在我们看来是给要用的数据起名字,很好理解,在计算机看来则是一串地址,通过地址从而达到要用的数据,这里不得不拿出内存简单结构了:
1字节 |
1字节 |
1字节 |
1字节 |
1字节 |
可以把上面这个结构看作是内存,几个格组成一个完整的数据,假设这五个格就组成一个完整的数据,在无数的格子中,我们要找到这五个格子(也就是要取用数据,)它在这无数个格之间到底在哪里,这就要看它们所在的地址了,在计算机看来,变量就告诉我们了这五个格到底是在这整个格子中的哪里。所以,变量的目的是方便我们取用数据,同时也是让计算机方便取用数据。
总结一下,变量是值的一个标签,它指向了数据在内存中所在的位置。