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允许你将不定长度的键值对,作为参数传递给一个函数。如果你想要

原文地址:https://www.cnblogs.com/zhibei/p/9759383.html