python是一种解释型语言,它的源代码可以直接运行。由python解释器把源代码解释为中间语言,然后翻译为机器码运行。
1.什么事pickling和unpiickling
我理解为对象的序列化和反序列化,利用pickle可以把python对象转化为二进制字符串(类型为bytes),方便文件存储对象,并可以利用load()重新得到此对象。
2.python如何管理内存的
python是一种动态类型的语言,引用与对象分离,GC采用引用计数的方式,交叉引用采用标记-清除方式识别,采用分代回收提高效率,为了降低GC引起的系统效能,自动回收需要
满足一定条件,内存管理详解点击这里
3.哪些工具可以帮助对python源码做静态分析
pychecker能够报告源码中的错误以及复杂度,pylint可以检测源码是否符合编程标准
4.什么是python装饰器
装饰器主要提供面向切面编程技术,实现以嵌套函数定义和函数闭包为依据,可通过@语法糖包装相关函数。装饰器介绍点击这里
5.数组和元组的区别
数组是可变的,元组是只读的,元组可作为dict的key
6.参数的值传递和引用传递如何实现的
python中的一切都是类,所有的变量都是对象的引用,赋值相当于修改引用,但是可以修改可变的对象。
7.列表推倒式,字典推倒式,集合推倒式
推倒式又叫解析式,它可以从一个数据列表快速构建另一个新的数据列表
列表推倒式基本形式 [value for value in list if exp]
生成器对象 (value for value in list if exp)
字典推倒式基本形式 {key:value for key,value in dict.items() if exp}
集合推倒式 {key for key in list if},集合不允许相同元素的存在
8.python有哪些自带的数据结构
可变的:list,dict,set,不可变的:string,tuple,number
9.python生成器是什么
生成器是实现迭代器的一种机制,它的功能实现依赖于yield表达式,除此之外和普通函数一样;
它的工作机制:带有yield的函数返回一个iterable对象通过__next__每次执行到yield返回值,下次next从yield下一句继续执行,直到遇见return或函数执行结束,抛出不用处理的StopIteration;
给人感觉像是协程的执行流程。