深拷贝和浅拷贝:
- 浅拷贝:a=b,只是传递对象b,改变a即改变b,拷贝的是引用;
- copy.copy()和copy.deepcopy()区别,deepcopy拷贝的是对象,会将将被拷贝对象内部的可变对象一起拷贝
- 可用id做对比
用分片改变列表:
- >>> a=['123','456','789']
- >>> a[0:3]
- ['123', '456', '789']
- >>> a[0:3]='abc'
- >>> a
- ['a', 'b', 'c']
range和xrange(2+):
- range返回整个列表
- xrange本质是生成器
for和while:
- for...in...本质为:
while True; try: next() catch StopIteration
map,filter和reduce:
- map,对序列里每个值操作:
map((lambda a: a+100), list)or map((lambda a,b: a+b, la,lb ))
- filter,对序列中每个值进行过滤:
filter((lambad a: a>0), ls)
- reduce,累计序列中各个值:
reduce((lambda a1,a2: a1 + a2),ls)
生成随机数:
- 生成>=a&&<=b的任一整数:
random.randint(a, b)
-
可按步长生成随机数,stop必须指定:
random.randrange(start, stop, step)
- 生成0到1的浮点数:
random.random()
安全关闭资源:
- with关键字和try...except...finally...等效应用
装饰器特点:
- 代码不做任何修改的前提下,增加额外功能,返回的是函数对象。(待加程序说明)
生成器特点(python3中大都为生成器,以提高效率):
- 一次性,可节省内存
- 生成器函数和一般函数最大区别为生成器每次yields一个值,而不是返回
- 推导式表达式用(),不是[]
- 生成器函数和表达式都是迭代器,或者说返回一个迭代器对象,只支持一次迭代活动
迭代器:
- I=iter(L) I.next(),L可迭代对象,I迭代器
- 迭代工具:for,推导式等
- 常用迭代器(3+):range,xrange(2+),map,zip,filter
- 迭代可手动迭代或使用迭代工具自动迭代
Python常用的垃圾处理机制:
- 引用计数
- 标记清除
- (。。。)
Python多线程问题:
- python优于GIL全局解释器锁问题,某一时刻只有一个线程占用cup执行,因此多cup、多核对于提高python应用效率并没有用
- python适用于IO密集型应用,cup占用率低,不适用于计算密集型应用
- 为什么要加GIL:个人理解,由于python的运行和资源分配需要靠python解释器,因此程序无法享有操作系统提供的线程保护机制,操作系统的线程保护机制只适用于python解释器。类似于操作系统课程中用户级线程和内核级线程的区别。