零基础学python-3.5 内存管理
2015-08-16 00:21
651 查看
* 变量无需事先声明
* 变量无需指定类型
* 程序员不用关系内存管理
* 变量名会被回收
* del可以直接释放资源
1.python使用的是引用调用,而不是值调用,他使用的回收算法是引用计数算法,我下面举两个例子
输出结果:
True
True
False
True
True
True
从输出结果分析我们得出下面结论,
1)如果单纯是整形、浮点型、字符串型这些,返回的都是同一个结果,因为它们值相同,而且引用的地址也相同
2)如果是列表、元组、字典等,由于两个对象存储不同的地址,即便是值相同,但是如果对比引用地址,还是返回false
2.通过del,可以删除对象
接着上面的代码:
输出结果:
True
True
False
True
True
True
Traceback (most recent call last):
File "D:\myWorkSpace\CRUDFile\com\ray\test\CRUDFile.py", line 14, in <module>
a
NameError: name 'a' is not defined
出现错误信息,a变量没有定义,因为我们通过del 把a释放掉
* 变量无需指定类型
* 程序员不用关系内存管理
* 变量名会被回收
* del可以直接释放资源
1.python使用的是引用调用,而不是值调用,他使用的回收算法是引用计数算法,我下面举两个例子
x = 4 y = 4 aList = [1, 2, 3] bList = [1, 2, 3] print(x is y) print(x == y) print(aList is bList) print(aList == bList) a = 3.2 b = 3.2 print(a is b) print(a == b)
输出结果:
True
True
False
True
True
True
从输出结果分析我们得出下面结论,
1)如果单纯是整形、浮点型、字符串型这些,返回的都是同一个结果,因为它们值相同,而且引用的地址也相同
2)如果是列表、元组、字典等,由于两个对象存储不同的地址,即便是值相同,但是如果对比引用地址,还是返回false
2.通过del,可以删除对象
接着上面的代码:
x = 4 y = 4 print(x is y) print(x == y) aList = [1, 2, 3] bList = [1, 2, 3] print(aList is bList) print(aList == bList) a = 3.2 b = 3.2 print(a is b) print(a == b) del a a
输出结果:
True
True
False
True
True
True
Traceback (most recent call last):
File "D:\myWorkSpace\CRUDFile\com\ray\test\CRUDFile.py", line 14, in <module>
a
NameError: name 'a' is not defined
出现错误信息,a变量没有定义,因为我们通过del 把a释放掉
相关文章推荐
- 零基础学python-3.4 模块结构
- 零基础学python-3.4 模块结构
- 使用Python操作MySQL的一些基本方法
- Python+Requests编码识别Bug
- python--有关函数的问题
- Python解析器源码加密系列之(一):标准c的tmpfile()、tmpfile_s()生成的临时文件究竟放在哪里了?
- vijos - P1223麦森数 (高精度乘法 + 分治 + python)
- python中的map、filter、reduce函数
- windows下如何快速优雅的使用python的科学计算库?
- Python多线程(3)——Queue模块
- python3 slice
- Python 学习之Virtualenv
- Python多线程(1)——介绍
- python 机器学习之kNN算法
- Python多线程(2)——线程同步机制
- vijos - P1164曹冲养猪(中国剩余定理 + python)
- Python3 字符串
- Python 3 数值计算
- 用Python 爬虫爬取贴吧图片
- Python编程中常用的12种基础知识总结