内容大部分转载自网络
答:
1、Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。
Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的
malloc。另外Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的
整数,用于缓存这些整数的内存就不能再分配给浮点数。
在Python中,许多时候申请的内存都是小块的内存,这些小块内存在申请后,很快又会被释放,由于这些内存
的申请并不是为了创建对象,所以并没有对象一级的内存池机制。这就意味着Python在运行期间会大量地执行malloc和free的操作,频繁地在用户
态和核心态之间进行切换,这将严重影响Python的执行效率。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存
的申请和释放。这也就是之前提到的Pymalloc机制。
结论:
1、Python实现了对内存的垃圾收集机制类似于GC的功能
2、当Python处理小于256字节的对象(当然这个值是可以调整)。是从内存池分配内存的,当处理大对象的时候是需要直接malloc到实际的物理内存。
3、对象间不共享他们的内存池。
答2:
1、考虑内置方法能否实现。发现可以使用reverse来实现序列的反转处理
代码:
a=[1,2,3,4]
a.reverse()
for i in a:
print i
2、考虑到[]能够从前往后读还可以从后往前读所以
代码:
a=[1,2,3,4]
for i in xrange(1,len(a)+1):
print a[-i]
a=[1,2,3,4]
for x in a[::-1]:print x
答案3.
分别使用tuple 与list内置函数即可转化
答案4.
d=[1,1,2,2,3,4]
e = []
for ele in d:
if ele in e:pass
else:
e.append(ele)
print e
答案6.
import random
随机整数:print random.randint(0,99)
随机小数:print random.random()
答案7.邮件发送模块使用smtplib即可具体的API可参考
新加内容:
8、python里面如何拷贝对象的?
答:
copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
copy.deepcopy 深拷贝 拷贝对象及其子对象 。参考http://blog.chinaunix.net/u2/84280/showart_2251862.html
9、Python中的pass的作用是什么?
pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作。
阅读(770) | 评论(0) | 转发(0) |