Python 变量的本质
-
当我们写:a = ‘ABC’时,Python解释器干了两件事情:
一、在内存中创建了一个’ABC’的字符串;
二、在内存中创建了一个名为a的变量,并把它指向’ABC’。
即,在Python中:- 和其他编程语言一样的是,变量是内存地址的别名,即a代表了地址0x1002;
- 和其他编程语言不一样的是,Python中的变量和数据分开存储:变量a所代表的地址0x1001处仅保存了数据20存储的内存地址0x1002。
- 变量a所标示的内存空间存储数据20所在内存地址的过程称为引用。
变量与地址
我们看到,当a,b都是2.0时,它们的地址不一样,说明系统为a,b分配了不同的内存空间。但是,当a,b都是2时,它们的地址是一样的,怎么回事呢?这是因为,为了提高内存空间的利用效率,对于一些比较小的整型变量(int)使用了相同的内存空间。如果数值比较大,地址就不一样了。
参考文章:
- https://blog.csdn.net/weixin_37780776/article/details/105302633?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.channel_param
- https://blog.csdn.net/qq_34979346/article/details/83691195?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-5&spm=1001.2101.3001.4242
- https://blog.csdn.net/qq_33679504/article/details/80516466?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param
- https://blog.csdn.net/WSBruce/article/details/79234389?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param