python面试题
1、一行代码实现1--100之和
In [1]: sum(range(1,101))
Out[1]: 5050
2、如何在一个函数内部修改全局变量
a=520 def fun(): global a a=1314 fun() print(a)
3、列出5个python标准库
- sys通常用于命令行参数
- datatime日期相关函数
- os与操作系统相关函数
- time时间相关函数
- re正则表达式
4、字典如何删除键和合并两个字典
#删除 d1={'name':'xjm','age':21} del d1['name'] print(d1) #合并 d2={'name':'xmm'} d1.update(d2) print(d2)
5、谈下python的GIL
GIL是python的全局解释器锁,当同一进程中有多个线程时,每个线程会霸占一个解释器,即加了锁。使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大。
6、python实现列表去重的方法
列表可重复,而集合不可重复,所以可以先转集合,再转回列表
>>> list1=[1,2,3,4,5,4,3,2,1] >>> a=set(list1) >>> a {1, 2, 3, 4, 5} >>> list2=list(a) >>> list2 [1, 2, 3, 4, 5]
7、fun(*args,**kwargs)中的*args,**kwargs什么意思?
当函数的参数不确定时,可以用这两个。
args可以用来传递非键值对的可变长度的参数--元祖
akwargs可以用来传递不定长的键值对的参数--字典
8、一句话解释什么样的语言能够用装饰器?
函数可以作为参数传递的语言,可以使用装饰器
9、python内建数据类型有哪些?
- 整型--int
- 布尔型--boolena
- 字符串--string
- 列表--list
- 元祖--tuple
- 字典--dict
10、简述面向对象中__new__和__init__区别
__init__是初始化方法,创建对象后,被立刻默认调用了,可接受参数
- __new__至少要一个参数cls,代变当前类,此参数在实例化由python自动识别
- __new__必须要有返回值,返回实例出来的实例。
- __init__有一个参数self,就是这个__new__返回的实例,不需要返回值
11、with方法打开处理文件帮我们做了什么?
实现了finally中f.close
12、[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25]
13、python中生成随机整数,0--1之间小数方法
随机整数:random.randint(a,b),生成区间内的整数
0--1随机小数:random.random(),不传参
In [17]: random.randint(1,100) Out[17]: 35 In [18]: random.random() Out[18]: 0.2341779825853031
14、避免转义字符。哪个字母表示原始字符串?
r,表示需要原始字符串,不转义特殊字符
15、python中断言方法举例
assert()方法,断言成功,则程序继续执行,断言失败,则程序报错
16、如何捕获异常,python的异常机制有哪些?
程序发生异常,会中断程序,调用python默认的异常处理器,并在终端输出异常信息
当程序遇到问题时,不让程序结束,而是越过错误,继续向下运行
1 try: 2 print(3/0) 3 except: 4 ZeroDivisionError