Python面试题

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;

给人感觉像是协程的执行流程。

posted @ 2018-02-26 22:16  green_crosswalk  阅读(108)  评论(0编辑  收藏  举报