Python 和 Java 的变量本质不一样。
- Java是定义好一个类型,
- 然后申请一个空间(大小和类型有关),
- 相当于一个盒子只能放固定类型。
Python 中的变量实质上是一个指针。
- 指针本身大小固定,变量的值具体占多大与指针无关。
- 值放在内存中的,需要访问值时只需找到指针,
- 指针帮我们找到值所在的内存空间从而读取值。
- 先将值存储在内存空间中,然后将变量指针指向这块内存空间。
可以把 Python 中的变量比作便利贴
(生成对象,后贴便利贴),便利贴大小固定可以贴在任何东西上面。
a = 1
变量a 贴在 1 上面。
a = "abc"
变量a 贴在“abc”上 而不是把“abc”分配给变量a
实例如下。
a = [1, 2, 3]
b = a
b.append(4)
print(a) # [1, 2, 3, 4]
print(a is b) # True
print(id(a), id(b)) # 2188448518600 2188448518600
上实例可看出。
- 变量b 贴在变量a上
- 在变量b上 添加值
- 打印变量a 输出结果为
[1, 2, 3, 4]
- 由此得出变量b 和变量a 实际上是贴在了同一个对象上面