1. 问题引入
如果你使用Python声明了一个变量并同时为其赋值,即a = 20
,你是否将这条语句简单理解为:a. 计算机开辟了一块地址别名为a
的内存;b. 往这块内存存储了数据20
?
如果你对上述问题的回答为是,那么你对诸如“Python是一门动态类型语言”、“Python效率远不如C语言等静态语言效率高”等说法也一定不了解其本质。
2. 问题解答
实际上,计算机在执行上述Python语句时,其本质如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/2ec9ad84537d4a62739b1f0dd9924ca1.png)
即,在Python中:
- 和其他编程语言一样的是,变量是内存地址的别名,即
a
代表了地址0x1002
;- 和其他编程语言不一样的是,Python中的变量和数据分开存储:变量
a
所代表的地址0x1001
处仅保存了数据20
存储的内存地址0x1002
。- 变量
a
所标示的内存空间存储数据20
所在内存地址的过程称为引用。