python面试题
python语言特性(数据结构、语法结构)
1、range和xrange
python2中,range和xrange有什么区别?
答:两者都用于for循环
range一开始就生成完整的list;xrange返回一个xrange object,且这个对象是iterable,要想返回list,需要类型转换list(xrange(1,4))
由于xrange object是按需生成单个元素,而不是像range那样创建整个list。实际上,xrange由于是在循环中被调用时才会生成元素,因此无论循环多少次,只有当前一个元素占用了内存空间,且每次循环占用的都是相同的单个元素空间。因此,我们可以粗略认为,相同n个元素,range占用的空间是xrange的n倍。因此,在循环很大的情况下,xrange的高效率和快速将表现的很明显:占用的内存空间将更小,速度更快,内存性能更好。测试一下range和xrange的执行时间。
3、列出5个python标准库
os:提供了不少与操作系统相关联的函数
sys: 通常用于命令行参数
re: 正则匹配
math: 数学运算
datetime:处理日期时间
4、字典如何删除键和合并两个字典
del和update方法
5、谈下python的GIL
GIL是python的全局解释器,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器,便该进程内的其他线程无法运行,等该西纳城运行完成后其他的线程才运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其它线程运行,所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。
多进程中因为每个进程都能被系统分配资源,相当于每个进程优良一个python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大。
7fun(*args,**args)中的*args,**kwargs什么意思?
*args和**kwargs主要用于函数定义,你可以将不定数量的参数传递给一个函数,这里的不定的意思是:余弦并不知道,函数使用者会传递多少个参数给你,所以在这个长江下使用这两个关键字。*args是用来发送一个非键值对的可变数量的参数列表给一个函数。
**kwargs允许你将不定长度的键值对,作为参数传递给一个函数。如果你想要