python变量与地址的关系
2018-02-01 23:45
381 查看
在C语言中,系统会为每个变量分配内存空间,当改变变量的值时,改变的是内存空间中的值,变量的地址是不改变的。
而在python中,Python采用的是基于值的管理方式。
当给变量赋值时,系统会为这个值分配内存空间,然后让这个变量指向这个值;当改变变量的值时,系统会为这个新的值分配另一个内存空间,然后还是让这个变量指向这个新值。
也就是说,C语言中变量变的是内存空间中的值,不变的是地址;而在Python中,变量变的是地址,不变的是内存空间中的值。
例如:
同时,如果没有任何变量指向内存空间的某个值,这个值称为垃圾数据,系统会自动将其删除,回收它占用的内存空间。
例如上面的变量x在指向3.14后,数值12就变成了垃圾数据。也可以使用del 命令 删除变量,但是删除之后就不能再使用了。否则会报错:变量没有定义。
另外,我们可以使用python的id()函数来查看变量的内存地址。
我们看到,当a,b都是2.0时,它们的地址不一样,说明系统为a,b分配了不同的内存空间。但是,当a,b都是2时,它们的地址是一样的,怎么回事呢?这是因为,为了提高内存空间的利用效率,对于一些比较小的整型变量(int)使用了相同的内存空间。如果数值比较大,地址就不一样了。例如:
而在python中,Python采用的是基于值的管理方式。
当给变量赋值时,系统会为这个值分配内存空间,然后让这个变量指向这个值;当改变变量的值时,系统会为这个新的值分配另一个内存空间,然后还是让这个变量指向这个新值。
也就是说,C语言中变量变的是内存空间中的值,不变的是地址;而在Python中,变量变的是地址,不变的是内存空间中的值。
例如:
同时,如果没有任何变量指向内存空间的某个值,这个值称为垃圾数据,系统会自动将其删除,回收它占用的内存空间。
例如上面的变量x在指向3.14后,数值12就变成了垃圾数据。也可以使用del 命令 删除变量,但是删除之后就不能再使用了。否则会报错:变量没有定义。
另外,我们可以使用python的id()函数来查看变量的内存地址。
我们看到,当a,b都是2.0时,它们的地址不一样,说明系统为a,b分配了不同的内存空间。但是,当a,b都是2时,它们的地址是一样的,怎么回事呢?这是因为,为了提高内存空间的利用效率,对于一些比较小的整型变量(int)使用了相同的内存空间。如果数值比较大,地址就不一样了。例如:
相关文章推荐
- Python学习笔记(8)-变量、地址、id、is与==
- Python中变量名与变量值的关系
- JAVA开发人员学习C++之变量名和变量地址之间是什么关系
- python学习(九)python中的变量、引用和对象的关系
- 变量名和地址之间的关系
- C语言变量名和地址的关系探讨
- python变量、引用、拷贝之间的关系
- C语言变量名和地址的关系探讨 http://blog.csdn.net/shyrgst/article/details/7360634
- tensorflow gpu 0.12.1 版本与python对应关系及下载地址
- C语言变量名和地址的关系(一)
- 变量及地址 分类: python基础学习 2013-06-15 15:32 190人阅读 评论(0) 收藏
- C 里面 ---变量名-- 和 --地址-- 的关系探讨
- C 里面 ---变量名-- 和 --地址-- 的关系探讨 <转>
- python变量、引用、拷贝之间的关系
- C 里面 ---变量名-- 和 --地址-- 的关系探讨
- python对象、引用、全局变量和局部变量的关系
- C语言变量名和地址的关系探讨
- python的__init__、__dict__以及类变量和对象变量的关系
- 变量指针和地址之间的关系
- 变量指针和地址之间的关系