阅读本文大约须要 5 分钟。
前面有提到因为 Python 基于 C 语言编写的解释器中设置了一个 GIL 全局变量锁,该锁使得 Python 的多线程在处理 CPU 计算密集型任务时,同一时刻只能有一个线程在运行,这也是为何说 Python 的多线程是一个「假性多线程」的缘由。python
解决 GIL 的办法在处理 CPU 计算密集型任务时,使用多进程 + 协程,发挥计算机多核的威力,而处理 I/O 密集型,则可使用多线程。git
lambdagithub
lambda 匿名函数,使用匿名函数能够帮助咱们简化代码,且节省程序因为显示建立函数的消耗。面试
示例:算法
# 冒号左边是参数, 右边是表达式,lambda 返回的是右边表达式的结果 L2 = lambda x : x * x print(L2(5)) # 结果为 25
map数据库
map(func,*Iterable)
,map 函数经过将可迭代对象传入 func 函数,所有执行。编程
示例:微信
# 至关于 [1*1, 2*2, 3*3, 4*4] L2 = list(map(lambda x: x * x, range(1, 4))) print(L2) # 结果为 [1, 4, 9, 16]
reduce多线程
reduce(func, *sequence)
,reduce 函数能够将函数 func 迭代调用。函数式编程
示例:
from functools import reduce # 至关于 ((1*2)*3) L2 = reduce(lambda x, y: x * y, range(1, 4)) print(L2) # 结果为 6
filter
filter(func,*Iterable),filter 函数经过将可迭代对象当作参数传递给 func 函数,并返回 func 函数中返回结果为 True 的值。
示例:
# 至关于 g = [x for x in range(10) if x < 3] L2 = list(filter(lambda x: x < 3, range(10))) print(L2) # 结果为 [0, 1, 2]
对于现现在的 Python 3.x,这个问题其实已经没有什么意义了,因为其在各大面经中都出现过,这里简单解释下。在 Python 2.x 中,range
和xrange
最大的区别就是xrange
生成的不是一个list
,而是一个生成器,这二者的区别在问题 13 已经讲过,这里不在赘述。
Python 3.x 中已经移除了range()
方法,并将xrange()
方法改名为range()
。
新式类和旧式类的变化主要讲的是 Python 中类的「继承」问题。
旧式类中,类的继承按照「从左往右,深度优先遍历」的原则。
新式类中,类的继承按照「C3 算法」的原则:若是子类在继承来自不一样父类的方法是不同的时候,会从下而上,先左后右的合并继承方法。若是有同样的方法,则会继承第一个方法而后舍弃另外一个相同的方法,接着合并其余不一样的方法。解决了旧式类继承中存在的二义性和单调性。
示例:
# 新式类 class B: def __init__(self,name): self.name = name def get_name(self): return 'B' class C: def __init__(self,name): self.name = name def get_name(self): return 'C' class BC(B, C): pass b = B('B') c = C('C') bc = BC('C') print(bc.name) name = bc.get_name() print(name) # 查看 c 在搜索方法时的前后顺序 print(bc.__mro__) # 结果为 C B (<class '__main__.BC'>, <class '__main__.B'>, <class '__main__.C'>, <class 'object'>)
另外,新式类相对于旧式类还多了这么些变化。
__slot__
:限制实例属性的设置范围。__getattrbute__
:获取实例属性值。type
与__class__
:返回类型统一。至此,有关 Python 知识点的面试题就已告一段落,下次更新数据库(MySQL,Redis)方面面试题。
全部内容均已上传至「GitHub」仓库,欢迎你们点击原文查阅。
欢迎你们关注我的微信公众号「PythonDeveloper」,全部内容第一时间更新于公众号。
全部内容均为本人一点一点敲出来的,不免会有错字、语句不通顺的地方,欢迎你们指正。
全部示例均已在 Python 3.5 环境下测试经过,若有出错地方,还请检查自身 Python 版本。
因本人水平有限,文章内容不免会有出错,欢迎你们评论指出,一块儿进步。